1.概述
容器生成bean的一种方式。容器通过扫描指定路径下的类,把满足条件的注解类作为容器中的Bean。
2.常用注解及使用方法
<!-- 自动扫描指定包及其子包下的所有类,将符合要求的注册为bean -->
<context:component-scan base-package="bean"/>
@Component("newNameCompnBean")
@Scope("prototype")
public class ComponentBean {
private Being being;
//自动注解,byType方式,将容器中类型匹配的bean设置为实例变量的值(也可是普通方法)
@Autowired
public ConstructorBean constructorBean;
public CollectionBean jihe;
//自动注解,byType方式,将容器中类型匹配的bean作为方法的形参输入
@Autowired
public void setJihe(CollectionBean jihe){
this.jihe = jihe;
}
public void printInf(){
System.out.println("我是一个组件bean");
}
//注入依赖
@Resource(name = "staticAnimal")
public void setBeing(Being being){
this.being = being;
}
public void getBeing(){
this.being.test();
}
//类似生命周期中init-method指定bean的初始化方法
@PostConstruct
public void init(){
System.out.println("Component Bean注入依赖后的init方法");
}
//类似生命周期中destory-method指定bean销毁前的方法
@PreDestory
public void close(){
System.out.println("Component Bean销毁前的close方法");
}
}
常用注解:
通过@Component、@Controller、@Service、@Respository标示的类被容器注册为bean;
通过@Scope表明bean的作用域;
通过@Resource注入依赖,@Autowired自动装配通过byType机制自动注入赋值给实例变量or作为方法的参数传入;
通过@PostConstruct和@PreDestory来标明生命周期方法;