美文网首页
spring学习12( 注解 配置 bean关系)

spring学习12( 注解 配置 bean关系)

作者: 又是那一片天 | 来源:发表于2017-07-25 12:28 被阅读0次

    通过使用@Autowired注解来配置bean之间的关系

    • @Autowired (Spring原理是后置处理器)会根据修饰的 构造器 属性 方法参数的类型自动装配

    • @Autowired所修饰的bean 必须加入spring 但可以使用@Autowired(required=false)设置可以为null

    • @Autowired 修饰的bean的类型有多个时 默认@Autowired比对bean的名字 名字不匹配会报错

    • 如果关联的bean没有指定名字可以使用 @Qualifier(类的name)指定类的name
    package note;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    
    @org.springframework.stereotype.Controller("controller")
    public class Controller {
        //@Autowired (Spring原理是后置处理器)会根据修饰的 构造器 属性 方法参数的类型自动装配
        //@Autowired所修饰的bean 必须加入spring 但可以使用@Autowired(required=false)设置可以为空
        //@Autowired 修饰的bean的类型有多个时  默认@Autowired比对bean的名字 名字不匹配会报错
        //如果关联的bean没有指定名字可以使用 @Qualifier(类的name)指定类的name
        
        @Autowired(required=false)
        @Qualifier("service")
        private Service service;
        
        public void execute() {
            System.out.println("Controller 执行");
            service.add();
        }
    
        public Service getService() {
            return service;
        }
    
        public void setService(Service service) {
            this.service = service;
        }
        
    }
    
    
    package note;
    
    import org.springframework.beans.factory.annotation.Autowired;
    
    @org.springframework.stereotype.Service
    public class Service {
        @Autowired
        private Repository repository;
        
        public void add() {
            System.out.println("Service add");
            repository.save();
        }
    
        public Repository getRepository() {
            return repository;
        }
    
        public void setRepository(Repository repository) {
            this.repository = repository;
        }
    
    }
    
    
    
    package note;
    @org.springframework.stereotype.Repository("repository")
    public class Repository {
        
        public void save() {
            System.out.println("Repository 保存");
        }
    
    }
    
    

    配置:

        <context:component-scan base-package="note"></context:component-scan>
    
    

    使用

        /**
         * 注解 配置 bean关系
         */
        public static void testScanBean() {
            ApplicationContext ctx = new ClassPathXmlApplicationContext("scanb.xml");
            Controller controller=ctx.getBean("controller",Controller.class);
            controller.execute();
        }
    

    相关文章

      网友评论

          本文标题:spring学习12( 注解 配置 bean关系)

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