时光如水

我心跳动
posts - 6, comments - 10, trackbacks - 0, articles - 4
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

2006年5月16日

AOP配置
1. 创建增强advice
2. 用ProxyFactoryBean配置增强advice或增强器advisor(增强和切入点组合)


大多数Spring自带的切入点都有一个对应的PointcutAdvisor,这样方便在一个地方定义切入点和通知
                           NameMatchMethodPointcut-->NameMatchMethodPointcutAdvisor增强器
       静态切入点    RegexMethodPointcut-->RegexMethodPointcutAdvisor增强器
切入点  
       动态切入点    ControlFlowPointcut


AOP常见例子:
Spring配置文件
<bean name="/searchSubmit" class="ca.nexcel.books.actions.SearchSubmit">
 <property name="bookService">
  <ref bean="bookService"/>
 </property>
</bean>
<bean name="logger" class="ca.nexcel.books.interceptors.LoggingInterceptor"/> |(1)
<!-- AutoProxies -->
<bean name="loggingAutoProxy" class="org.springframework.aop.framework.autoproxy.
 BeanNameAutoProxyCreator"> |(2)
     <property name="beanNames">
 <value>/searchSubmit</valuesgt; |(3)
     </property>
     <property name="interceptorNames">
 <list>
     <value>logger</value> |(4)
 </list>
     </property>
</bean>
其中(1)注册拦截器
      (2)创建了一个 bean名称自动代理,它描述如何应用拦截器。
      (3)将Struts动作注册为将被拦截的bean。如果您想要拦截其他的Struts 动作,则只需要在 "beanNames" 下面创建附加的<value>标记
      (4)执行的拦截器bean的名称

posted @ 2006-05-16 16:41 qiqijava 阅读(557) | 评论 (0)编辑 收藏

 

两个主要容器

BeanFactory                   XmlBeanFactory                               

                                    FileSystemXmlApplicationContext

ApplicationContext           ClassPathXmlApplicationContext

                                    XmlWebApplicationContext

区别:

BeanFactory      延迟载入所有Bean,直到getBean()被调用才创建Bean

ApplicationContext 启动后加载所有Bean

 

Bean生命周期:BeanFactory容器

 

实例化

  设置属性

    调用BeanNameAwaresetBeanName()方法

       调用BeanFactoryAwaresetBeanFactory()方法

          调用ApplicationContextAwaresetApplicationContext()方法(如果容器为ApplicationContext)

          调用BeanPostProcessor的预初始化方法

             调用InitializingBeanafterPropertiesSet()方法

             调用定制的初始化方法(init-method参数配置的方法)

          调用BeanPostProcessor的后初始化方法

至此Bean可以被使用

 

调用DisposableBeandestroy()方法

调用定制的销毁方法(destroy-method参数配置的方法)

至此Bean被销毁

 

BeanFactoryPostProcessor例子

  1. PropertyPlaceholderConfigurer

    从多个外部属性文件中载入属性,并使用这些属性替换占位符变量

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    <property name="locations">

        <list>

 <value>WEB-INF/mail.properties</value>

 <value>WEB-INF/jdbc.properties</value>

        </list>

     </property>

</bean>

  1. CustomEditorConfigurer

    注册定制的java.bean.PropertyEditor实现,用它把装配的属性转化为其他类型,可使用String设置给一个非String属性

posted @ 2006-05-16 16:38 qiqijava 阅读(519) | 评论 (0)编辑 收藏

便利的实现

模板方法:

      将流程中的可变部的具体实现委托给一个接口,这个接口的不同实现定义了可变部分的具体实现

Spring 把数据访问流程中的固定部分与可变部分分开,分别映射成两个类:模板 Template ,回调 Callback ,模板管理流程的固定部分,回调处填写实现细节

 

DAO 模板

 

1. 准备资源

2. 启动事务

5. 提交 / 回滚事务

6. 关闭资源和处理异常

DAO 回调

 

 

3. 在事务中执行

4. 返回数据

DAO 支持类

 

     继承

关联

 

 

posted @ 2006-05-16 16:36 qiqijava 阅读(652) | 评论 (0)编辑 收藏