Spring入门(06)-Spring的AOP

本文介绍了如何使用Spring AOP通过注解和配置文件两种方式实现方法拦截,包括定义切入点、前置通知、后置通知、最终通知及环绕通知等。

一.注解方式

打开注解<aop:scoped-proxy />

定义拦截类和注入对象

 <bean id="personService" class="com.hx.sprindemo01.service.impl.PersonServiceImpl"/>
  <bean id="MyInterceptor" class="com.hx.sprindemo01.service.impl.MyInterceptor"/>

定义切面   

@Aspect
public class MyInterceptor {

定义切入点

  @Pointcut("execution(* com.hx.sprindemo01.service.impl.PersonServiceImpl.*(..))")
  public void anyMethod() {} 
  定义通知
  @Before("anyMethod()&& args(user)")//拦截到参数值
  public void dosm(String user){
   System.out.println("前置函数"+user);
  }

  @AfterReturning(pointcut="anyMethod()",returning="result")拦截到返回值
  public void doend(String result){
   System.out.println("后置函数result"+result);
  }  @After("anyMethod()")
  public void doAfter(){
   System.out.println("最终通知");
  }

  @AfterThrowing("anyMethod()")
  public void doAfterThrowing(){
   System.out.println("例外通知");
  }

 @Around("anyMethod()")
 public Object doBasicProfiling(ProceedingJoinPoint pjp)throws  Throwable{
  System.out.println("进入方法");
   Object result = pjp.proceed();
   System.out.println("退出方法");
   return result;
 }

 

 

}

 

 

 

二.配置文件方式

   <aop:aspectj-autoproxy/>
  <bean id="personService" class="com.hx.sprindemo01.service.impl.PersonServiceImpl"/>
  <bean id="MyInterceptor2" class="com.hx.sprindemo01.service.impl.MyInterceptor2"/>
  <aop:config>
    <aop:aspect id="myaop" ref="MyInterceptor2">
     <aop:pointcut id="mycut" expression="execution(* com.hx.sprindemo01.service.impl.PersonServiceImpl.*(..))"/>
     <aop:before pointcut-ref="mycut" method="dosm"/>
     <aop:after-returning pointcut-ref="mycut" method="doend"/>
     <aop:after-throwing pointcut-ref="mycut" method="doAfterThrowing"/>
     <aop:after pointcut-ref="mycut" method="doAfter"/>
     <aop:around pointcut-ref="mycut" method="doBasicProfiling"/>
    </aop:aspect>
  </aop:config>

配置参数,只要修改expression内容就可以了

execution(java.lang.String com.hx.sprindemo01.service.impl.PersonServiceImpl.*(..))

execution(* com.hx.sprindemo01.service.impl.PersonServiceImpl.*(java.lang.String,..))

execution(!void com.hx.sprindemo01.service.impl.PersonServiceImpl.*(java.lang.String,..))

 

类中方法

execution(* com.hx.sprindemo01.service.impl.PersonServiceImpl.*(java.lang.String,..))

 

包下所有类

execution(* com.hx.sprindemo01.service.impl..*.*(..))

 

表达式常见错误:第一个星号后面加空格

MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值