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