零、需要的依赖:
<dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.8.9</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.9</version></dependency>
一、定义服务
package cn.edu.tju.study.service.aspect;import cn.edu.tju.study.service.MyBusiness;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;@Service
public class MyDemoService {public void myMethod(){System.out.println("in my method...");}
}
二、定义切面
package cn.edu.tju.study.service.aspect;import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;@Component
@Aspect
public class MyAspect {@Before("execution(* cn.edu.tju.study.service.aspect.*.*(..))")public void aop(){System.out.println("before method executing......");}
}
三、定义配置文件
package cn.edu.tju.study.service;import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.stereotype.Component;@Configuration
@EnableAspectJAutoProxy(proxyTargetClass = true)//
@ComponentScan(basePackages = "cn.edu.tju.study.service.aspect")
public class MyConfig3 {}
四、定义测试主类:
package cn.edu.tju.study.service;import cn.edu.tju.study.service.aspect.MyDemoService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class AopAnnotationTest3 {public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();context.register(MyConfig3.class);context.refresh();MyDemoService myDemoService = context.getBean("myDemoService", MyDemoService.class);myDemoService.myMethod();}
}
五、执行结果: