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. 目标类
public class HelloWorld{
public void say() {
System.out.println("hello world");
}
}
3. 切面及通知
/**
* 这个类就是切面类
* 里面的方法就是通知
*/
public class Aspect {
public void before(){
System.out.println("before");
}
public void after(){
System.out.println("after");
}
}
4. spring配置
<bean id="hello" class="com.aop.demo1.HelloWorld"/>
<bean id="aspect" class="com.aop.demo1.Aspect"/>
<aop:config>
<aop:pointcut id="demo" expression="execution(* com.aop.demo1.HelloWorld.*(..))"/>
<aop:aspect ref="aspect">
<aop:before method="before" pointcut-ref="demo"/>
<aop:after-returning method="after" pointcut-ref="demo"/>
</aop:aspect>
</aop: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