Aspectj 注解
1.aspectj 注解
public interface ISomeService { public void doSome(); public String doSecont(); }
public class SomeService implements ISomeService { //核心业务 public void doSome() { System.out.println("拜托别让他一番努力换来是奢求!"); } public String doSecont() { System.out.println("++===================Secont 天天新网友====================++"); return "doSecont"; } }
public class MySecont { //前置增强 @Before(value = "execution(* *..spring12aop_note.*.*(..))") public void myBefore(){ System.out.println("===我是前置增强内容======"); } //后置增强 //@AfterReturning(value = "execution(* *..spring12aop_note.*.*(..))") public void myAferReturing(){ System.out.println("===我是after后置增强内容======"); } //环绕增强 //@Around(value = "execution(* *..spring12aop_note.*.*(..))") public Object myAround(ProceedingJoinPoint proceed) throws Throwable { System.out.println("===我是环绕前内容======"); Object result = proceed.proceed(); System.out.println("===我是环绕后内容======"); if (result!=null){ String str=(String)result; return str.toUpperCase(); }else{ return null; } } }
配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!--aspectj 注解--> <!--01.目标对象--> <bean id="someService" class="cn.happy.spring12aop_note.SomeService"></bean> <!--02.增强 通知--> <bean id="beforeAdvice" class="cn.happy.spring12aop_note.MySecont"></bean> <aop:aspectj-autoproxy/> </beans>
单测
//1.aspectj 注解 @Test public void test05(){ ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext09_aop09_note.xml"); ISomeService service = (ISomeService) ctx.getBean("someService"); service.doSome(); service.doSecont(); }