原生配置文件引入-@ImportResource
# 80.原生配置文件引入-@ImportResource
如果项目之前是使用 Spring,并且用了配置文件,那么迁移到配置类的方式,会非常麻烦;为此我们可以用@ImportResource 注解,导入该配置文件。我们来演示下:
# 新增配置文件
我们在 resources 目录下新建 beans.xml:
<?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 https://www.springframework.org/schema/context/spring-context.xsd">
<bean id="haha" class="com.peterjxl.boot.bean.User">
<property name="name" value="zhangsan"/>
<property name="age" value="18"/>
</bean>
<bean id="hehe" class="com.peterjxl.boot.bean.Pet">
<property name="name" value="tomcat"/>
</bean>
</beans>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
然后我们可以看看容器中有没该组件:
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
boolean tom = run.containsBean("tom");
System.out.println("容器中Tom组件:" + tom);
boolean user01 = run.containsBean("user01");
System.out.println("容器中user01组件:" + user01);
boolean haha = run.containsBean("haha");
boolean hehe = run.containsBean("hehe");
System.out.println("容器中hehe组件:" + haha);
System.out.println("容器中hehe1组件:" + hehe);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
运行结果:
容器中hehe组件:false
容器中hehe1组件:false
1
2
2
# 使用注解
我们可以在 Myconfig 类上,使用@ImportResource 注解:
@Import({User.class, DBHelper.class})
@Configuration(proxyBeanMethods = false)
@ImportResource("classpath:beans.xml")
public class MyConfig {
1
2
3
4
2
3
4
再次运行项目,就有这两个组件了。
# 源码
已将本文源码上传到 Gitee (opens new window) 或 GitHub (opens new window) 的分支 demo6,读者可以通过切换分支来查看本文的示例代码
上次更新: 2024/10/3 10:01:52