Spring
对这个框架并不陌生,spring是一个开源的控制反转(Inversion
of Control
,IoC)和面向切面(AOP)的容器框架.它的主要目得是简化企业开发...
1.为Spring添加jar
支持
2.Spring:1.xml + 反射
2.不需要实例化
3.不需要set方法
以前 至上而下,
按部就班
之下而上,反的
3. bean的生命周期
bean被载入到容器中时,他的生命周期就开始
了。bean工厂在一个bean可以使用前完成很多
工作:
1.容器寻找bean的定义信息并实例化。
2.使用依赖注入,spring按bean定义信息配置bean的所有属性。
3.若bean实现了BeanNameAware接口,工厂调用Bean的setBeanName
()方法传递bean的ID。
4.若bean实现了BeanFactoryAware接口,工厂调用setBeanFactory()
方法传入工厂自身。
5.若BeanPostProcessor和bean关联,则它们的
postProcessBeforeInitialization()方法被调用。
6.若bean指定了ini-method方法、,它将被调用。
7.最后,若有BeanPostProcessor和bean关联,则它们的
postProcessAfterInitialization()方法被调用、。
4.set注入的缺点:
无法清晰表达哪些属性是必须的,哪些是可选
的,构造注入的优势是通过构造强制依赖关系,不可能实例化不
完全的或无法使用的bean。
5.自动装配
<bean id=" " class="" autowire="autowire 类型">
有四种自动装配类型:
1.byName:寻找和属性名相同的bean,若找不到,则装不上。
2.byType:寻找和属性类型相同的bean,找不到,装不上,找到多个抛异常。
3.constructor:查找和bean的构造参数一致的一个或
多个bean,若找不到或找到多个,抛异常。按照参数的类型装配
4.autodetect: (3) 或者(2)方式选一个。不确定
性的处理与(3)和(2)一致。
注意:
spring2.5提供了<context:annotation-config
/>配置.
该配置可激活在类中探测到的各种注解,@Required
@Autowire
@PostConstrct @PreDestroy @Resource @EJB @PersistenceContext
@WebServiceRef等等,
也可以选择为这些注解激活单独的后处理器.
6.属性的外部化
分散配置
将配置文件分成几个分散的配置文件。如数据源。
<bean class="...PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>jdbc.properties</value>
<value>securtiy.properties</value>
</list>
</property>
</bean>
当然在Spring2.5可以简化为
<context:property-placehoder location>
7.AOP
有一些模块是每个系统都需要的,切面是系统
模块化的一个切面或领域。如日志记录。不改变源代码,还给类增加新的功能
2.连接点:应用程序执行过程中,可以应用切面的地点,可以是方法调用,异常抛出,或者要修改的
字段。
3.通知:切面的实际实现,他通知系统新的行为。
4.切入点:定义了通知应该应用在哪些连接点,通知可以应用到AOP框架支持的任何连接点。
5.引入:为类添加新方法和属性。
6.目标对象:被通知的对象。既可以是你编写的类也可以是第三方类。
7.代理:将通知应用到目标对象后创建的对象,应用系统的其他部分不用为了支持代理对象而
改变。
8.织入:将切面应用到目标对象从而创建一个新代理对象的过程。织入发生在目标
对象生命周期的多个点上:
编译期:切面在目标对象编译时织入.这需要一个特殊的编译器.
类装载期:切面在目标对象被载入JVM时织入.这需要一个特殊的类载入器.
运行期:切面在应用系统运行时织入.
今天到此结束,明天继续!
posted on 2010-02-26 23:02
d66380022 阅读(233)
评论(0) 编辑 收藏