1 为什么要使用aop
以前读取数据库的数据一般都是,这样就会造成代码的重复,导致非核心(比如日志操作 读取数据库操作 等等)的代码占用了大量的空间。
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection conn = null;
try {
String url = "jdbc:mysql://192.168.35.128:3306/demo";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
我们把重复的数据抽取出来就可以成为一个方面(
2 什么叫Aop
AOP(Aspect Oriented Programming)称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待
在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
----摘自百度百科
相关概念:
1
Aspect(切面) :Aspect 声明类似于java中得类声明,在aspect中包含了着一些PointCut以及对应的Advice
2
Joint ponit(连接点) 表示程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行灯灯光,它自身还可以嵌套其他的joint point
3
PointCut 表示一组joint point ,这些joint point 或者通过逻辑关系组合起来,或是通过匹配 正则表达式 等方式集中起来,它定义相应的advice将要发生的地方
4
Advice :advice定义了在pointcut 里面定义的程序点具体要做的操作,它通过before after 和around 来区别。
打个比方: 做个汉堡。先做牛排,然后将蔬菜与芝士 面包 组合起来。
切面 是盛蔬菜和面包的盘子(定义了Pointcut 已经相应的advice)
连接点 是这两个牛排 意思是我可以操作哪些点
切点 就是定义了一套规则,比如蔬菜要在牛排的上面(before) 芝士要在中间(around) 面包要垫底(after)
Advice 指的是哪些材料,比如蔬菜,芝士 面包
待续