Spring AOP面向切面三种实现

一、类的所有方法都做切面。

<bean id="beforeAdvice" class="aop.BeforeAdvice"></bean>
 <bean id="afterAdvice" class="aop.AfterAdvice"></bean>
 <bean id="compareInterceptor" class="aop.CompareInterceptor"></bean>
 
 <bean id="studenttarget" class="aop.StudentImpl"></bean>
 
 <bean id="student" class="org.springframework.aop.framework.ProxyFactoryBean">
  <property name="proxyInterfaces">
   <value>aop.Student</value>
  </property>
  <property name="interceptorNames">
   <list>
    <value>beforeAdvice</value>
    <value>afterAdvice</value>
    <value>compareInterceptor</value>
   </list>
  </property>
  <property name="target">
   <ref bean="studenttarget" />
  </property>
 </bean>

二、用Spring配置实现方法的切面,带传参数。

<bean id="userService" class="spring.aop.impl.UserServiceImpl" />
 <bean id="aspect" class="spring.aop.impl.UserAspectImpl" />
 <aop:config>
  <aop:pointcut id="pointcut"
   expression="execution(* spring.aop.impl.UserServiceImpl.getUser(..))" />
  <aop:aspect ref="aspect">
   <aop:before pointcut-ref="pointcut" method="before" />
   <aop:after-returning pointcut-ref="pointcut"
    method="afterReturn" />
   <aop:after pointcut-ref="pointcut" method="after" />
  </aop:aspect>
 </aop:config>

 <bean id="aspectParameter" class="spring.aop.impl.UserAspectParameterImpl" />
 <aop:config>
  <aop:pointcut id="pointcutParameter"
   expression="execution(* spring.aop.impl.UserServiceImpl.getUser(spring.aop.entry.User)) and args(u)" />
  <aop:aspect ref="aspectParameter">
   <aop:before pointcut-ref="pointcutParameter" method="before"  arg-names="u"/>
   <aop:after-returning pointcut-ref="pointcutParameter" method="afterReturn"  arg-names="u"/>
   <aop:after pointcut-ref="pointcutParameter" method="after"  arg-names="u"/>
  </aop:aspect>
 </aop:config>

三、通过@Aspect注释方式实现切面,带传参数。

四、main方法运行

AopTest.java

AspectTest.java

SpringAopTest.java

注意:下载以后有帮助的同学给点好评!我工作时间找了半天的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值