美文网首页
JavaConfig 实现Bean IOC

JavaConfig 实现Bean IOC

作者: 内蒙小猿 | 来源:发表于2022-04-29 15:57 被阅读0次

    JavaConfig 原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的定义信息,在 Spring4 的
    版本, JavaConfig 已正式成为 Spring4 的核心功能 。

    基于Java类进行配置

    1、编写一个实体类,User

    package com.zhao.pojo;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    @Component //将这个类标注为Spring的一个组件,放到容器中!
    public class User {
    
        private String name;
    
        public String getName() {
            return name;
        }
    
        @Value("孙悟空")
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    '}';
        }
    }
    

    2、新建一个config配置包,编写一个MyConfig配置类

    package com.zhao.config;
    
    import com.zhao.pojo.User;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Import;
    
    @Configuration //代表这是一个配置类
    @ComponentScan("com.zhao.pojo")
    @Import(zhaoConfig2.class)  //导入合并其他配置类,类似于配置文件中的 inculde 标签
    public class zhaoConfig {
    
        @Bean
        // 通过方法注册一个bean,这里的返回值就Bean的类型,方法名就是bean的id!
        // <bean id="getUser" class="com.zhao.pojo.User" ></bean>
        public User getUser(){
            return new User();
        }
    
    }
    

    3、测试

    @Test
        public void testAnnotationUser(){
            ApplicationContext context = new AnnotationConfigApplicationContext(zhaoConfig.class);
            User user = context.getBean("getUser", User.class);
            System.out.println(user.getName());
    
        }
    

    导入其他配置如何做呢?

    1、我们再编写一个配置类!

    package com.zhao.config;
    
    import com.zhao.pojo.Person;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration  //代表这是一个配置类
    public class zhaoConfig2 {
    
        @Bean
        // 通过方法注册一个bean,这里的返回值就Bean的类型,方法名就是bean的id!
        // <bean id="getUser" class="com.zhao.pojo.User" ></bean>
        public Person getPerson(){
            return new Person();
        }
    }
    
    

    2、 在之前的配置类中我们来选择导入这个配置类

    package com.zhao.config;
    
    import com.zhao.pojo.User;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Import;
    
    @Configuration //代表这是一个配置类
    @ComponentScan("com.zhao.pojo")
    @Import(zhaoConfig2.class)  //导入合并其他配置类,类似于配置文件中的 inculde 标签
    public class zhaoConfig {
    
        @Bean
        // 通过方法注册一个bean,这里的返回值就Bean的类型,方法名就是bean的id!
        // <bean id="getUser" class="com.zhao.pojo.User" ></bean>
        public User getUser(){
            return new User();
        }
    
    }
    

    3、测试, 通过 zhaoConfig 实现 zhaoConfig2 的Bean

    这里使用的 zhaoConfig.class 来获取 Person,而不是直接使用 zhaoConfig2。
    当然直接使用 zhaoConfig2 也是可以

        @Test
        public void testAnnotationPerson(){
    
            ApplicationContext context = new AnnotationConfigApplicationContext(zhaoConfig.class);
            Person person = context.getBean("getPerson", Person.class);
            System.out.println(person.getName());
    
        }
    

    相关文章

      网友评论

          本文标题:JavaConfig 实现Bean IOC

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