Spring AOP切面传递参数

本文通过一个具体的示例展示了如何使用 Spring AOP 进行面向切面编程。配置了 Magician 类作为切面,在 Thinker 类的方法调用前后进行拦截,并在调用前打印拦截到的思考内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


spring 配置文件相关配置
<aop:config>
     <!-- 定义AOP切面 -->
     <aop:aspect ref="magician">
          <!-- 定义AOP切点 -->
          <aop:pointcut expression="execution(* com.spring.aop.Thinker.thinkOfSomething(String)) and args(thoughts)" id="thinking"/>
          <!-- 前值方法与切点相关联 -->
          <aop:before pointcut-ref="thinking" method="interepetThoughts" arg-names="thoughts"/>
      </aop:aspect>
</aop:config>
对应的测试类
public interface MindReader {
     public void interepetThoughts(String thoughts);
     public String getThoughts();
}
@Service("magician")
public class Magician implements MindReader{
     private String thoughts;
     @Override
     public void interepetThoughts(String thoughts) {
          System.out.println("Intercepting volunteer's thoughts="+thoughts);
          this.thoughts = thoughts;
     }
     @Override
     public String getThoughts() {
          return thoughts;
     }
}
public interface Thinker {
     public void thinkOfSomething(String thoughts);
}
@Service("volunteer")
public class Volunteer implements Thinker{
     private String thoughts;
     @Override
     public void thinkOfSomething(String thoughts) {
          this.thoughts = thoughts;
     }
     public String getThoughts(){
          return thoughts;
     }
}
测试方法
public static void main(String[] args) throws Exception {
          GenericXmlApplicationContext context = new GenericXmlApplicationContext();
          context.load("com/spring/aop/applicationContext.xml");
          context.refresh();
          Volunteer volunteer = (Volunteer)context.getBean("volunteer");
          volunteer.thinkOfSomething("Queen of Hearts");
          Magician magician = (Magician)context.getBean("magician");
          System.out.println("Magician's Method "+magician.getThoughts());
     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fjkxyl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值