您的位置:首页 > 编程语言 > Java开发

如何正确理解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容器会自动调用













文章正在正理中....





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: