*什么是IoC(Inversion of Control)?
即控制反转。其思想是控制资源获取的方向。传统的资源获取的方式为向容器发起请求,然后容器返回资源,而应用了IOC之后,容器主动地将资源退送给它所管理的组件,组件要做的仅仅是选择一种合适的方式来接收资源即可。
买菜的例子。
*什么是DI(Dependency Injection)?
即依赖注入。通常来讲,一个复杂的应用需要多个类相互协作,譬如类A要实现功能A需要类B的协作,那么类A就是依赖于类B,传统的做法是在类A的内部直接创建B的对象,然后使用B的功能,而应用依赖注入之后,类A就可以通过某种约定的方式接收类B的注入,可以是通过setter方法啦什么的
简而言之:组件以一种约定好的方式(譬如:属性注入:property(开发中最常用的注入方式),构造器注入:constructor-arg(使用构造器注入的时候,通过指定注入属性的位置以区分重载的构造器))接收来自容器资源的注入
*为什么要使用IoC或者DI?
为了解耦,为了提高组件的复用性
*bean的作用域?
使用bean节点的scope属性来设置
默认作用域是:单例
通常情况下,在IoC容器中创建的bean是单例的,就是说,对于配置的一个bean,IoC容器会为该bean创建一个单例对象,就是说,每次通过getBean获取响应bean,获取的都是同一个bean
可以设置作用域:原型(prototype)
也就是说,配置的bean是一个原型,每次获取此bean都是新创建的