
一、Spring IoC容器相关概念
客户端对象Spring IoC容器IoC Service ProviderIoC模式 二、Spring IoC容器类型分类
2.1、BeanFactory
2.1.1、概念2.1.2、BeanFactory的对象注册与依赖绑定方式
2.1.2.1、直接编码方式2.1.2.2、XML文件方式2.1.2.3、注解 2.1.3、XML详情2.1.4、各个业务对象(注入对象)相互依赖
2.1.4.1、构造方法注入XML2.1.4.4、setter方法注入XML 2.1.5、bean的scope
2.1.5.1、scope="singleton"2.1.5.2、scope="prototype"
一、Spring IoC容器相关概念 客户端对象如果对象A需要引用对象B,那么A就是B的客户端对象。
Spring IoC容器是一个提供IoC支持的轻量级容器,作为轻量级容器还支持IoC功能以外的支持。
容器启动阶段,把bean注册到容器中。
当某个方法通过容器的getBean方法请求某个对象,容器会检查对象是否初始化,然后返回给请求对象。
是一个抽象出来的概念,它可以指代任何将IoC场景中的业务对象绑定到一起的实现方式。它可以是一段代码,也可以是一组相关的类,甚至可以是比较通用的IoC框架或者IoC容器实现。
IoC模式IoC是一种模式,即使不使用IoC容器开发,只用简单的代码也可以实现IoC模式。
二、Spring IoC容器类型分类 2.1、BeanFactory 2.1.1、概念基础类型IoC容器,提供完整的IoC服务支持。如果没有特殊指定,默认采用延迟初始化策略( lazy-load)。只有当客户端对象需要访问容器中的某个受管对象的时候,才对该受管对象进行初始化以及依赖注入 *** 作。
既然Spring框架提倡使用POJO,那么把每个业务对象看作一个JavaBean对象
BeanFactory接口:管理Bean的接口,只定义如何访问容器内管理的Bean的方法。(图书馆) BeanDefinitionRegistry接口:该接口作用是Bean的注册和管理。(图书馆书架) DefaultListableBeanFactory类:BeanFactory接口和BeanDefinitionRegistry接口的实现类。 BeanDefinition接口:负责保存对象的所有必要信息,对象的属性,构造方法等。当客户端(注册对象)向BeanFactory(IoC容器)请求相应的对象,BeanFactory会通过这些信息为客户端返回一个完备的对象实例。2.1.2.2、XML文件方式 2.1.2.3、注解
component 英[kəmˈpəʊnənt]
美[kəmˈpoʊnənt]
n. 组成部分; 成分; 部件;
wired
英 [ˈwaɪəd] 美 [ˈwaɪərd]
adj.
(与计算机系统)联网的, 连线的;(为使坚挺或坚固)内含金属丝的,夹丝的;兴奋的;紧张不安的;迷醉的
autowired
自动装配
@Component //被注入对象
public class FXNewsProvider {
//依赖对象,抓取新闻的接口
@Autowired//告知Spring容器要为当前对象注入哪些依赖对象,指明依赖对象
private IFXNewsListener newsListener;
//依赖对象,存储新闻的接口
@Autowired//告知Spring容器要为当前对象注入哪些依赖对象,指明依赖对象
private IFXNewsPersister mewsPersister;
}
解释:每个业务对象作为个体,与配置文件的
既然Spring框架提倡使用POJO,那么把每个业务对象看作一个JavaBean对象
id:每一个注册到容器的对象唯一标识
name:指定
alias:name属性是
class:每个注册到容器的对象都需要通过元素的class属性指定其类型
BeanFactory容器除了有IoC Service Provider的职责,作为轻量级容器还有对象的生命周期管理。
bean定义可以看作是一个模板,容器会根据这个模板来构造对象。但是要根据这个模板构造多少对象实例,又该让这些构造完的对象实例存活多久,则由容器根据bean定义的scope语意来决定。
标记为scope="singleton"的对象,在Spring IoC容器只存在一个实例,所有该对象的引用共享这个实例。生命周期是该实例第一被请求(BeanFactory启动),一直存活到容器退出。
2.1.5.2、scope=“prototype”标记为scope="prototype"的对象,容器在接到该类型的对象的请求的时候,会每次重新生成一个新的对象给请求方。请求方需要自己负责当前返回对象的后继生命周期管理工作。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)