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

通过使用@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 保存");
    }

}

配置:

    

使用

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

你可能感兴趣的:(spring学习12( 注解 配置 bean关系))