学科分类
目录
Spring Boot开发

使用@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配置文件。

点击此处
隐藏目录