一.aop面向切面编程
核心业务功能开发一遍,周边功能(切面功能)再开发一遍,再把两者编织在一起,就叫aop
1.先运行,看到效果,再学习
运行TestSpring的效果如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8zsNu2up-1685359798140)(null)]
2.思路图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KMr5ydgr-1685359798120)(null)]
核心业务功能是必须得写的,再选择性地把切面功能编织在核心功能上
3.业务类ProductiveService
package com.how2java.service;
public class ProductService {
public void doSomeService(){
System.out.println("doSomeService");
}
}
很容易看出,这段代码就是输出一个doSomeService
4.TestSpring
核心代码:
public class TestSpring {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });
ProductService s = (ProductService) context.getBean("s");
s.doSomeService();
}
}
先说明配置文件是applicationContext.xml是该类的配置文件,s是xml文件中 `
定义的,对应的文件是ProductService,并调用ProductService中的doSomeService方法。
5.准备日志切面 LoggerAspect
public class LoggerAspect {
public Object log(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("start log:" + joinPoint.getSignature().getName());
Object object = joinPoint.proceed();
System.out.println("end log:" + joinPoint.getSignature().getName());
return object;
}
}
在核心功能前后分别打印gatName()的结果,以次看出日志对核心功能的记录情况
6.applicationContext.xml
该配置文件对bean命名,声明业务对象,指定核心业务功能和切面功能,并且将两者编织在一起
7.效果
编程式事物管理和声明式事物管理有什么区别?
- 编程式事物管理和声明式事物管理是用来管理事物的两种不同方法
- 编程式事物管理是直接写代码进行事物管理
- 声明式任务管理依靠配置去定义事物行为