一、类的所有方法都做切面。
<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
注意:下载以后有帮助的同学给点好评!我工作时间找了半天的!