spring boot(学习笔记第七课)
- 配置AOP,数据库操作(jdbcTemplate)
学习内容:
- 配置AOP
- 数据库操作(jdbcTemplate)
1. 配置AOP
如果想要在一些既存系统上对系统进行分析,监视,但是又不想改修原有的代码,可以通过AOP (Aspect Of Program)
来实现。
- 在
pom.xml
中引入spring-boot-starter-aop
。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
- 定义
service
类UserService
,假设这就是想要监视的legency class
。@Service public class UserService { public String getUserById(Integer id){ System.out.println("getUserById"); return "user"; } public void deleteUserById(Integer id){ System.out.println("deleteUserById"); } }
- 定义
AOP
类,对UserService
类进行监视。@Before(value = "userServicePC()")
在函数执行前执行@after(value = "userServicePC()")
在函数执行后执行@AfterReturning(value = "userServicePC()", returning = "result")
在函数返回直前执行@AfterThrowing(value = "userServicePC()", throwing = "e")
在函数抛出异常直前执行。@Around("userServicePC()")
在函数执行前后执行,能够包围函数执行,函数执行就是Object ret = pjp.proceed();
。
@Aspect @Component public class LogAspect { @Pointcut("execution(* com.example.demo.services.*.*(..))") public void userServicePC() { } @Before(value = "userServicePC()") public void before(JoinPoint jp) { String name = jp.getSignature().getName(); System.out.println(name + " is beginning"); } @After(value = "userServicePC()") public void after(JoinPoint jp) { String name = jp.getSignature().getName(); System.out.println(name + " is finishing")