如何正确理解Spring
2012-11-05 12:39
204 查看
Spring实现二种设计模式:
工厂模式
单态模式
工厂模式可以将调用者从被调用者的实现逻辑中分离出来,调用者只需关心被调用者必须满足的的规则(接口),而不必关心实现的具体实现过程。这是面向接口编程的优势,能提高程序的解耦,避免所有类以硬编码方式耦合在一起。
如果所有的类直接耦合,极易形成“骨牌效应(在一个相互联系的系统中,一个很小的初始能量就可能产生一连串的连锁反应,人们就把它们称为“多米诺骨牌效应”或“多米诺效应”)”,假如B调用了A类,一旦A类需要修改,则B类也需要修改,假如C类调用了B类,则C类也需要修改。。。。。依次类推,从而导致整个系统都需要改写,造成“牵一发而动全身”,而系统重构的代价是相当高的。
Spring倡导“面向接口编程”,可以避免上述的问题,使设计良好的框架可以保证系统重构的工作被封闭的重构的层内,绝不会影响其他层。
Spring容器是实例化和管理全部Bean的工厂,Spring默认将所有Bean设置成单态模式,无须自己完成单态模式,即对所有相同id的Bean请求都将返回同一个共享实例,因此,单态模式可以大大降低Java对象在创建和销毁时的系统开销。
Spring的依赖注入方式:
设置注入
构造注入
Spring的Bean和BeanFactory
Bean是Spring容器中最基本的单位
BeanFacotry是一个生产Bean的工厂,Bean是Spring工厂生产的实例,BeanFactory负责创建,配置和管理Bean,并且还维护Bean与Bean之间的依赖关系。
Bean的行为方式有二种
Singleton
non-Singleton或prototype原型
创建Bean的实例
1.通过构造器“new”一个Bean的实例
2.通过静态工厂方法创建一个Bean的实例
3.通过实例工厂方法创建一个Bean的实例
配置依赖
Bean的元素
value:它采用的基本类型,他的转行是通过PropertyEditors完成类型转换;
ref:它是对Bean注入的一个Bean引用;
bean:它是嵌套Bean的一个Bean,这个Bean是对它的外围Bean生效;
list set map 和props:它们分别是采用List、Set、Map、Properties类型的属性,如果对他们的属性注入需要采用这四种类型;
注入属性值
通过PropertyPathFactoryBean类可以注入某个实现的属性。PerportyPathFactoryBean用来获取目标Bean的属性值,获得的值可以注入给其他Bean,也可以直接定义成新的Bean。
注入Field值
通过FieldRetrievingFactoryBean类,可能完成Field值的注入,FieldRetrievingFactoryBean用来获取目标Bean的Field值,获得的值可以注入给其它的Bean,也可以直接定义成新的Bean。
注入方法返回值
通过MethodInvokingFactoryBean类,可注入方式返回值。MethodInvokingFactoryBean用来获取某个方法的返回值,该方法可以是静态方法,也可以是实例方法。该方法的返回值可以注入Bean实例属性,也可以直接定义成Bean的实现。
Bean的自动装配
autowire属性值:
no
byName
byType
constructor
autdetect
依赖检查
通过Bean元素dependency-check属性来设置依赖检查
none:不检查
simple:只对基本类型和集合
objects:只对合作者Bean进行依赖检查
all:对所有的合作Bean、基本类型和集合全部进行依赖检查
定制Bean的生命周期和管理Bean的生命周期有二个时机
注入依赖关系后
使用init-method属性
实现InitializingBena接口,默认要实现一个方法,Spring容器会自动调用
即将销毁Bean之前
使用destroy-method属性
实现DisposableBean接口,默认要实现一个方法,Spring容器会自动调用
文章正在正理中....
工厂模式
单态模式
工厂模式可以将调用者从被调用者的实现逻辑中分离出来,调用者只需关心被调用者必须满足的的规则(接口),而不必关心实现的具体实现过程。这是面向接口编程的优势,能提高程序的解耦,避免所有类以硬编码方式耦合在一起。
如果所有的类直接耦合,极易形成“骨牌效应(在一个相互联系的系统中,一个很小的初始能量就可能产生一连串的连锁反应,人们就把它们称为“多米诺骨牌效应”或“多米诺效应”)”,假如B调用了A类,一旦A类需要修改,则B类也需要修改,假如C类调用了B类,则C类也需要修改。。。。。依次类推,从而导致整个系统都需要改写,造成“牵一发而动全身”,而系统重构的代价是相当高的。
Spring倡导“面向接口编程”,可以避免上述的问题,使设计良好的框架可以保证系统重构的工作被封闭的重构的层内,绝不会影响其他层。
Spring容器是实例化和管理全部Bean的工厂,Spring默认将所有Bean设置成单态模式,无须自己完成单态模式,即对所有相同id的Bean请求都将返回同一个共享实例,因此,单态模式可以大大降低Java对象在创建和销毁时的系统开销。
Spring的依赖注入方式:
设置注入
构造注入
Spring的Bean和BeanFactory
Bean是Spring容器中最基本的单位
BeanFacotry是一个生产Bean的工厂,Bean是Spring工厂生产的实例,BeanFactory负责创建,配置和管理Bean,并且还维护Bean与Bean之间的依赖关系。
Bean的行为方式有二种
Singleton
non-Singleton或prototype原型
创建Bean的实例
1.通过构造器“new”一个Bean的实例
2.通过静态工厂方法创建一个Bean的实例
3.通过实例工厂方法创建一个Bean的实例
配置依赖
Bean的元素
value:它采用的基本类型,他的转行是通过PropertyEditors完成类型转换;
ref:它是对Bean注入的一个Bean引用;
bean:它是嵌套Bean的一个Bean,这个Bean是对它的外围Bean生效;
list set map 和props:它们分别是采用List、Set、Map、Properties类型的属性,如果对他们的属性注入需要采用这四种类型;
注入属性值
通过PropertyPathFactoryBean类可以注入某个实现的属性。PerportyPathFactoryBean用来获取目标Bean的属性值,获得的值可以注入给其他Bean,也可以直接定义成新的Bean。
注入Field值
通过FieldRetrievingFactoryBean类,可能完成Field值的注入,FieldRetrievingFactoryBean用来获取目标Bean的Field值,获得的值可以注入给其它的Bean,也可以直接定义成新的Bean。
注入方法返回值
通过MethodInvokingFactoryBean类,可注入方式返回值。MethodInvokingFactoryBean用来获取某个方法的返回值,该方法可以是静态方法,也可以是实例方法。该方法的返回值可以注入Bean实例属性,也可以直接定义成Bean的实现。
Bean的自动装配
autowire属性值:
no
byName
byType
constructor
autdetect
依赖检查
通过Bean元素dependency-check属性来设置依赖检查
none:不检查
simple:只对基本类型和集合
objects:只对合作者Bean进行依赖检查
all:对所有的合作Bean、基本类型和集合全部进行依赖检查
定制Bean的生命周期和管理Bean的生命周期有二个时机
注入依赖关系后
使用init-method属性
实现InitializingBena接口,默认要实现一个方法,Spring容器会自动调用
即将销毁Bean之前
使用destroy-method属性
实现DisposableBean接口,默认要实现一个方法,Spring容器会自动调用
文章正在正理中....
相关文章推荐
- 如何正确理解正则表达式中的分隔符 \b
- 如何正确理解商业智能(BI)?--上
- 如何正确理解自动化测试?
- 如何正确得理解TT字体中的EM_Size
- 如何理解Spring的连接池管理机制?
- 如何正确理解WS_CLIPCHILDREN和WS_CLIPSIBLINGS
- 你对spring是如何理解的?
- 如何正确理解企业文化
- 如何正确的理解和解决 ORA-01843:not a valid month
- 如何写出正确的二分查找?——利用循环不变式理解二分查找及其变体的正确性以及构造方式
- java 关于Spring中Aop的简单理解以及SpringBoot如何添加Aop实现步骤
- 如何正确理解 SQL 中的 NULL
- 到底什么是权限?我们应该如何正确理解“权限定义”(请高手指点)
- 如何理解Spring 的配置文件
- 如何正确的理解和解决 ORA-01843:not a valid month
- 如何正确理解PHP的错误信息
- 如何正确理解商业智能(BI)?
- 项目管理:如何正确理解配置管理
- 如何正确理解CAP理论?