美文网首页
Spring IoC/DI 12-混合配置注入 Bean

Spring IoC/DI 12-混合配置注入 Bean

作者: 周老一员 | 来源:发表于2020-02-21 17:51 被阅读0次

    混合配置注入 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);
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Spring IoC/DI 12-混合配置注入 Bean

          本文链接:https://www.haomeiwen.com/subject/xmqhqhtx.html