Spring容器
Spring容器怎样去创建Bean对象并且管理的?
BeanFactory
- 读取Bean对象的配置信息
- 加载Bean对象并实例化
- 建立关联关系
- 管理Bean对象生命周期
ApplicationContext:是BeanFactory的一个子接口,并支持了更多内容,因此现在都用它
面试题:BeanFactory的原理是什么?(其实没什么意义)
Spring框架的一个发展趋势就是所有的配置简单化,其中一个最主要的标志就是@AutoWired
,用一种默认的方式将对象和对象之间的耦合关联起来(绑依赖注入)
@Component
public class Boss_constructor {
private Car car;
private Office office;
@Autowired
public Boss_constructor(Car toyota, Office office) {
this.car = toyota;
this.office = office;
}
}
这样Spring容器再扫描Bean对象时就会将依赖注入,比如先寻找Car类的Bean对象,因为Car是一个接口可能有多个实现,如果找到多个Car类的bean对象,那就按照对象名toyota来匹配,如果匹配不到就注入空值。
还有一种方法是对属性加注解,但这种方法不推荐,因为破坏了封装性,因为注入的方式就应该是构造方法或是set(set其实一般也不用,偶尔会在类之间循环依赖的时候用)
但是可以用Resource???(todo)
生命周期
Spring对象实在容器中创建的,容器中留了可以让你写代码的地方,称为接口。