零、需要的依赖:
<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();
}
}
五、执行结果: