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>
<!-- 增强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>
相关文章推荐
- 获取form表单元素值的4种方式
- java反射创建带构造参数的类 并执行方法
- 圣思园-张龙-Java SE 第四讲(运算符 Operator)
- Java获取泛型类型中的实际类型
- java 构造方法总结
- java中构造方法和方法全面解析
- 《小平工作日志》java各种jar包作用详解……《持续更新》
- 用spring的断言实现对service的参数验证
- JDK自带监控工具
- myeclipse版本怎么查看
- eclipse下切换svn用户
- 在蜂窝教育Java培训培训 如愿进外企
- Java输入的新手解惑,键入(输入)数字等
- JAVA中int与String的相互转化方法和使用
- java深浅拷贝
- Java Annotation 及几个常用开源项目注解原理简析
- java连接MYSQL及查询数据记录
- SpringMVC中定时器继承Task后无法对service注入问题
- 漫谈Java实例化类
- Spring Boot 快速入门