Spring XML配置示例
在这个Spring XML配置示例中,我们将看到如何创建一个Spring应用程序,其中使用XML配置完成bean声明和bean依赖项配置。
对于此Spring XML配置示例,Maven构建工具用于管理依赖项。请参阅在Eclipse中使用Maven创建Java项目,以了解如何创建Maven项目。
Maven依赖
对于此示例,我们需要spring核心和spring上下文依赖项。使用的Spring版本是5.1.8 Release,该版本在pom.xml中的properties元素下定义。
Spring核心提供了基本框架类和与其他模块进行交互的类。
Spring上下文模块提供了org.springframework.context.ApplicationContext接口,该接口表示Spring IoC容器,并负责实例化,配置和组装Bean。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.theitroad</groupId>
<artifactId>SpringProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>SpringProject</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>5.1.8.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</project>
豆类
在示例中,有一个用于下订单的类,称为Order,可以从商店进行购买。 Order and Store bean和bean依赖项将使用Spring XML配置进行配置。
public interface IStore {
public void doPurchase(int items);
}
public class Store implements IStore {
public void doPurchase(int items) {
System.out.println("Doing purchase of " + items +" Items");
}
}
public class Order {
private IStore store;
private int items;
public Order(IStore store, int items) {
this.store = store;
this.items = items;
}
public void setStore(IStore store) {
this.store = store;
}
public void buyItems() {
store.doPurchase(items);
}
}
从类中可以看到,Order依赖于Store(Order类中的Store字段是IStore类型)。
Spring XML配置
在src / main / resources包中创建一个XML文件appContext.xml。此XML文件用于创建ApplicationContext。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- Store bean -->
<bean id="store" class="com.theitroad.SpringProject.Store" />
<!-- Order bean with dependencies -->
<bean id="order" class="com.theitroad.SpringProject.Order">
<constructor-arg ref="store" />
<constructor-arg type="int" value="20" />
</bean>
</beans>
请注意,这里将依赖项作为构造函数依赖项注入进行注入。
我们可以将以下类与main方法一起使用以读取配置并调用bean方法。 Spring框架中有几种ApplicationContext接口的实现。在独立应用程序中,通常创建ClassPathXmlApplicationContext或者FileSystemXmlApplicationContext的实例。
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main( String[] args ){
// create context using configuration
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("appcontext.xml");
Order order = context.getBean("order", Order.class);
order.buyItems();
// close the context
context.close();
}
}
输出:
17:48:34.049 [main] DEBUG org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loaded 2 bean definitions from class path resource [appcontext.xml] 17:48:34.173 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'store' 17:48:34.217 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'order' Doing purchase of 20 Items

