一:架构图
二:运行效果
三:源码
1、导入AOP坐标
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.4</version>
</dependency>
2、定义dao接口和实现类
BookDao :
package com.jin.dao;
public interface BookDao {
void save();
void update();
}
BookDaoImpl:
package com.jin.dao.Impl;
import com.jin.dao.BookDao;
import org.springframework.stereotype.Repository;
@Repository
public class BookDaoImpl implements BookDao {
@Override
public void save() {
System.out.println(System.currentTimeMillis());
System.out.println("book dao save .. ");
}
@Override
public void update() {
System.out.println("book dao update .. ");
}
}
3、定义通知类
MyAdvice:
package com.jin.aop;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Component
//切面
@Aspect
public class MyAdvice {
//切入点
@Pointcut("execution(void com.jin.dao.BookDao.update())")
private void pt(){}
//在程序前执行
@Before("pt()")
//通知
public void method(){
System.out.println(System.currentTimeMillis());
}
}
4、开启Spring对AOP注解驱动支持
SpringConfig :
package com.jin.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
@Configuration
@ComponentScan({"com.jin"})
//告诉它,我们要用注解开发Aop
@EnableAspectJAutoProxy
public class SpringConfig {
}
5、运行类
APP :
package com.jin;
import com.jin.config.SpringConfig;
import com.jin.dao.BookDao;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class App {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
BookDao bean = context.getBean(BookDao.class);
bean.update();
}
}