1. pom.xml 依赖导入
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
</dependencies>
2. 目标类
@Component("hello")
public class HelloWorld {
public void say(){
System.out.println("hello world");
}
}
3. 切面及通知
@org.aspectj.lang.annotation.Aspect
@Component("aspect")
public class Aspect {
public static final String EDP = "execution(* com.test.annatation.HelloWorld.*(..))";
@Before(EDP)
public void before(){
System.out.println("before");
}
@After(EDP)
public void after(){
System.out.println("after");
}
}
4. spring配置
<context:component-scan base-package="com.test.annatation"/>
<aop:aspectj-autoproxy proxy-target-class="true"/>
<context:annotation-config/>
5. 客户端
public class Client {
public static void main(String[] args){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
HelloWorld hw = (HelloWorld) ac.getBean("hello");
hw.say();
}
}
6.结果
before
hello world
after