spring概览

来源:互联网 发布:unitcell软件 编辑:程序博客网 时间:2024/05/28 23:20

Spring模块:
这里写图片描述

IOC及DI

这里写图片描述
IoC,控制反转,还有一个名字叫做依赖注入(Dependency Injection),就是由容器控制程序之间的关系

依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。

依赖注入DI:
特殊的类型,如集合(Collection、无序集合Set、有序集合List)类型、数组(Array)类型、字典(Map)类型数据、Properties类型数据,参考:
http://sishuok.com/forum/blogPost/list/2447.html

DI 之循环依赖:
循环依赖就是循环引用,就是两个或多个Bean相互之间的持有对方,比如CircleA引用CircleB,CircleB引用CircleC,CircleC引用CircleA,则它们最终反映为一个环。
Spring容器循环依赖包括构造器循环依赖和setter循环依赖
参考:http://jinnianshilongnian.iteye.com/blog/1415278

bean

延迟初始化Bean:
–指不提前初始化Bean,而是只有在真正使用时才创建及初始化Bean
–什么时候要延迟初始化bean:除非有某个Bean可能需要加载很大资源,而且很可能在整个应用程序生命周期中很可能使用不到,可以设置为延迟初始化。
–怎样写:对bean加上属性 lazy-init=”true”

使用depends-on:
某个beanB依赖另一个beanA,则初始化顺序为先有A后有B,销毁顺序是先销毁B后销毁A(就像数据库销毁表先释放外键再销毁)
写法:

1.<bean id="dependentBean"  2.    class="cn.javass.spring.chapter3.bean.DependentBean"  3.    init-method="init" destroy-method="destroy" depends-on="resourceBean">  4.    <property name="resourceBean" ref="resourceBean"/>  5.</bean>  

java 文件IO与depends-on结合的例子见
http://jinnianshilongnian.iteye.com/blog/1415461

方法注入:
所谓方法注入其实就是通过配置方式覆盖或拦截指定的方法,通常通过代理模式实现。Spring提供两种方法注入:查找方法注入和方法替换注入。
因为Spring是通过CGLIB动态代理方式实现方法注入,也就是通过动态修改类的字节码来实现的,本质就是生成需方法注入的类的子类方式实现。

bean的作用域:
Spring提供“singleton”和“prototype”两种基本作用域,另外提供“request”、“session”、“global session”三种web作用域;Spring还允许用户定制自己的作用域。

singleton:指“singleton”作用域的Bean只会在每个Spring IoC容器中存在一个实例,而且其完整生命周期完全由Spring容器管理。对于所有获取该Bean的操作Spring容器将只返回同一个Bean,都是放在缓冲池中取的。

prototype:即原型,指每次向Spring容器请求获取Bean都返回一个全新的Bean,相对于“singleton”来说就是不缓存Bean,每次都是一个根据Bean定义创建的全新Bean。
也就是说prototype类型的每次调用重新产生,不会放在缓冲池中。

Spring提供了三种Web作用域:request、session、globalSession

自定义作用域:几乎用不到自定义作用域,除非又必要才进行自定义作用域。
参考:http://jinnianshilongnian.iteye.com/blog/1415463

数据源:

0 0