随笔-54  评论-0  文章-2  trackbacks-0

                                      Spring

 对这个框架并不陌生,spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是简化企业开发...

1.为Spring添加jar支持

2.Spring1.xml + 反射

       2.不需要实例化

          3.不需要set方法

 以前 至上而下, 按部就班

              之下而上,反的

3. bean的生命周期

       bean被载入到容器中时,他的生命周期就开始

       了。bean工厂在一个bean可以使用前完成很多

       工作:

       1.容器寻找bean的定义信息并实例化。

       2.使用依赖注入,springbean定义信息配置bean的所有属性。

       3.bean实现了BeanNameAware接口,工厂调用BeansetBeanName

        ()方法传递beanID

       4.bean实现了BeanFactoryAware接口,工厂调用setBeanFactory()

          方法传入工厂自身。

       5.BeanPostProcessorbean关联,则它们的

          postProcessBeforeInitialization()方法被调用。

       6.bean指定了ini-method方法、,它将被调用。

       7.最后,若有BeanPostProcessorbean关联,则它们的

          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)  编辑  收藏