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

Spring 切面配置

2016-03-21 00:00 375 查看
<!-- ******************静态切面实列***************** -->

<!-- 增强Bean -->

<bean id="waiterBerforeAdvice" class="com.yrdoa.web.WaiterBerforeAdvice"/>

<!-- 目标Bean -->

<bean id="miaomiao" class="com.yrdoa.web.MaoMao">

<property name="name" value="猫咪小可"></property>

<property name="jiao" value="汪汪................"></property>

</bean>

<!-- 管理切面类。p:advice-ref把增强放入切面 -->

<bean id="staticAdvisor" class="com.yrdoa.web.StaticAdvisor" p:advice-ref="waiterBerforeAdvice"></bean>

<!--

设置父代理类

p:interceptorNames 放切面,而不再是增强

-->

<bean id="paramProxy"

class="org.springframework.aop.framework.ProxyFactoryBean"

p:interceptorNames="staticAdvisor"

p:proxyTargetClass="true" />

<!-- 设置子代理类 -->

<bean id="userDaoProxy" parent="paramProxy" p:target-ref="miaomiao"></bean>

<!-- ****************** AOP实列********AOP的切面是非常的重要的感念。还有切点也是重要的概念 spring 提供了很多 切面和 切点供我们选择 提供了很多的方案********* -->

<!-- ****************** 定义前置通知********yuehui方法********* -->

<bean id="girl" class="com.aop.GirlImpl"></bean>

<bean id="grilService" class="com.aop.GrilServiceImpl"></bean>

<bean id="girlBeforeAdvice" class="com.aop.GirlBeforeAdvice" ></bean>

<bean id="beforemyPointcut" class="com.aop.MyPointcut" ></bean>

<bean id="myAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">

<property name="pointcut">

<ref local="beforemyPointcut"/>

</property>

<property name="advice">

<ref local="girlBeforeAdvice"/>

</property>

</bean>

<!-- *******注意使用正则表达式*********** 定义后置通知********yuehui方法********* -->

<bean id="girlAfterAdvice" class="com.aop.GirlAfterAdvice" ></bean>

<bean id="regexpAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">

<property name="patterns">

<list>

<value>.*hello</value>

</list>

</property>

<property name="advice">

<ref local="girlAfterAdvice"/>

</property>

</bean>

<!-- ****************** 定义环绕通知********yuehui方法********* -->

<bean id="girlMethodInterceptor" class="com.aop.GirlMethodInterceptor" ></bean>

<bean id="myAroundAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">

<property name="mappedNames">

<list>

<value>hello</value>

</list>

</property>

<property name="advice">

<ref local="girlMethodInterceptor"/>

</property>

</bean>

<!-- ********这个配置没有织如代理类 ********* 异常通知********service方法********* -->

<bean id="girlThrowsAdvice" class="com.aop.GirlThrowsAdvice"></bean>

<bean id="myThrowsAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">

<property name="mappedNames">

<list>

<value>yamiedie</value>

</list>

</property>

<property name="advice">

<ref local="girlThrowsAdvice"/>

</property>

</bean>

<!-- 定义父类代理类,名 称为myProxy,将通过myProxy访问业务类中的方法 -->

<bean id="myProxy" class="org.springframework.aop.framework.ProxyFactoryBean">

<property name="proxyInterfaces">

<value>com.aop.Girl</value>

</property>

<property name="interceptorNames">

<list>

<value>myAdvisor</value>

<value>regexpAdvisor</value>

<value>myAroundAdvisor</value>

</list>

</property>

</bean>

<!-- 设置子代理类(也可以说成注入目标对象) 可以配置多个子代理类 -->

<bean id="girlProxy" parent="myProxy" p:target-ref="girl"></bean>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: