使用@ImportResource加载XML配置文件
在传统的Spring框架开发中,依赖于Spring的XML配置文件来进行项目配置,Spring Boot框架是在Spring 4.X的基础上进行了改进,默认不再通过XML配置文件的形式来配置项目。实际开发中,如果需要XML格式的配置文件,由于Spring Boot默认无法识别XML配置文件,因此想要XML配置文件生效,可以使用@ImportResource注解加载XML配置文件。
@ImportResource注解标注在一个配置类上,通常放置在应用启动类上,使用时需要指定XML配置文件的路径和名称。
为了演示@ImportResource注解的使用,下面,在chapter02项目的基础上通过一个案例来演示说明,具体步骤如下。
(1)在chapter02项目下新建一个com.itheima.config包,并在该包下新创建一个类MyService,该类中不需要编写任何代码,内容如文件1所示。
文件1 MyService.java
1 public class MyService {
2 }
文件1中创建了一个空的MyService类,而该类目前没有添加任何配置和注解,因此还无法正常被Spring Boot扫描和识别。
(2)打开Spring Boot项目chapter02的resources目录,在该目录下新建一个名为beans.xml的XML自定义配置文件,在该配置文件中通过配置向Spring容器中添加MyService类对象,内容如文件2所示。
文件2 beans.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://www.springframework.org/schema/beans
5 http://www.springframework.org/schema/beans/spring-beans.xsd">
6 <bean id="myService" class="com.itheima.config.MyService" />
7 </beans>
文件2中的beans.xml配置文件是使用传统的Spring框架XML方式编写的配置文件,在该配置文件中通过<bean>标签向Spring中配置了MyService类对象(即将编写的MyService类作为组件注入到Spring容器中)。
(3)编写完Spring的XML配置文件后,Spring Boot默认是无法识别的,为了保证XML配置文件生效,需要在项目启动类Chapter02Application上添加@ImportResource注解来指定XML文件位置,内容如文件3所示。
文件3 Chapter02Application.java
1 import org.springframework.boot.SpringApplication;
2 import org.springframework.boot.autoconfigure.SpringBootApplication;
3 import org.springframework.context.annotation.ImportResource;
4 @ImportResource("classpath:beans.xml") // 加载自定义XML配置文件位置
5 @SpringBootApplication
6 public class Chapter02Application {
7 public static void main(String[] args) {
8 SpringApplication.run(Chapter02Application.class, args);
9 }
10 }
(4)打开chapter02项目的测试类Chapter02ApplicationTests,在该测试类中引入ApplicationContext实体类Bean,并新增一个测试方法进行输出测试,示例代码如下。
@Autowired
private ApplicationContext applicationContext;
@Test
public void iocTest() {
System.out.println(applicationContext.containsBean("myService"));
}
上述代码中,先通过@Autowired注解引入了Spring容器实例ApplicationContext,然后在测试方法iocTest()中测试查看该容器中是否包括id为myService的组件。
执行测试方法iocTest()后,查看控制台输出效果,结果如图1所示。
图1 程序测试效果
从图1可以看出,测试方法iocTest()运行成功,显示出Spirng的IOC容器中已经包含了id为myService的实例对象组件,说明@ImportResource注解成功加载了Spring框架的XML配置文件。