Springboot-ImportResourc原生配置文件引入
@ImportResource-原生配置文件引入
若要按照之前的方式在xml里面写组件,引入时需要在配置类中使用@ImportResource。如:
1、写原生配置文件。如:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="haha" class="com.example.bean.User">
<property name="name" value="zhangsan"></property>
<property name="age" value="18"></property>
</bean>
<bean id="hehe" class="com.example.bean.Pet">
<property name="name" value="tomcat"></property>
</bean>
</beans>
2、在配置类中引入。如:
package com.example.config;
import ch.qos.logback.core.db.DBHelper;
import com.example.bean.Pet;
import com.example.bean.User;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.ImportResource;
/**
* 5、@ImportResource("classpath:beans.xml")导入Spring的配置文件
*/
@ImportResource("classpath:beans.xml")
@Import({User.class, DBHelper.class})
@Configuration(proxyBeanMethods = true) //告诉SpringBoot这是一个配置类 == 配置文件
public class MyConfig {
/**
* 外部无论对配置类中的这个组件注册方法调用多少次,获取的都是之前注册容器中的单实例对象
* @return
*/
@ConditionalOnBean(name="tom") //当有tom这个组件时再创建user01组件,如若没有,则不进行创建;若放在上面,即public class MyConfig{上面,则若有该名字的组件,则创建以下所有组件,若无,则下面所有组件都不进行创建
@Bean //给容器中添加组件,以方法名作为组件的id,返回类型就是组件类型,返回的值就是组件在容器中的实例
// public User user01(){
// return new User("zhangsan",18);
// }
public User user01(){
User zhangsan=new User("zhangsan",18);
//User组件依赖了Pet组件
zhangsan.setPet( tomcatPet());
return zhangsan;
}
//@Bean("tom") //若不想以方法名作为组件id,可以在@Bean()中添加想要设置的组件id
public Pet tomcatPet(){
return new Pet("tomcat");
}
}
3、在主文件类中测试,是否原生配置文件中的组件已引入。如:
package com.example;
import ch.qos.logback.core.db.DBHelper;
import com.example.bean.Pet;
import com.example.bean.User;
import com.example.config.MyConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication //这是一个SpringBoot应用
public class MainApplication { //主程序类,主配置类
public static void main(String[] args) {
//SpringApplication.run(MainApplication.class,args);
//1、返回我们IOC容器
ConfigurableApplicationContext run=SpringApplication.run(MainApplication.class,args);
//2、查看容器里面的组件
String[] names=run.getBeanDefinitionNames();
for(String name:names){
System.out.println(name);
}
//判断容器中是否有命名为此(如:tom和user01)的组件
boolean hehe=run.containsBean("hehe");
System.out.println("配置文件中的hehe组件:"+hehe);
boolean haha=run.containsBean("haha");
System.out.println("配置文件中的haha组件:"+haha);
}
}
版权声明:本文为qq_42250642原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。