混合配置注入 Bean
一般情况下,注入 Bean 的方式,不是通过 XML 配置,就是通过 Java 配置,如果想要同时将两种配置生效(即混合配置),则需要在 Java 配置中通过 @ImportResource 注解导入 XML 配置,应用时通过 Java 配置获取 Bean,此时 Java 配置和 XML 配置的 Bean 都可以获取到。
示例
UserJava.java --> 通过 Java 配置注入 Bean
public class UserJava {
@Override
public String toString() {
return "UserJava{}";
}
}
UserXml.java --> 通过 XML 配置注入 Bean
public class UserXml {
@Override
public String toString() {
return "UserXml{}";
}
}
applicationContext.xml --> XML 配置,只注入了 UserXml 的 Bean
<?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 class="org.daistudy.bean.UserXml" id="userXml"/>
</beans>
JavaConfig.java --> Java 配置,只注入了 UserJava 的 Bean,但通过 @ImportResource 注解导入 XML 配置
@Configuration
@ImportResource({"classpath:applicationContext.xml"})
public class JavaConfig {
@Bean
UserJava userJava(){
return new UserJava();
}
}
应用 --> Java 配置和 XML 配置的 Bean 都可以获取到
public class Test {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class);
UserJava userJava = (UserJava) context.getBean("userJava");
System.out.println(userJava);
UserXml userXml = (UserXml) context.getBean("userXml");
System.out.println(userXml);
}
}
网友评论