2.2 AOP介绍
在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
2.2.1 为什么使用AOP
在上一节中讲到定义了约定好的方法代理执行的流程(方法可前后和异常处理),那么我们编写的其他方法也可以按照这种方式织入实现约定好的流程中,避免了写大量重复的代码,也提高了代码的可维护性。而SpringBoot中是使用注解的方式将方法织入约定的流程中。
下面以数据库事务处理的情景说明其概念。传统的JDBC实现插入用户的代码。
public class UserService{
public int insertUser(){
UserDao userDao = new UserDao();
user user = new User();
user.setUsername("lei");
Connection cnnn = null;
int result = 0;
try{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","1234");
//非自动提交事务
conn.setAutoCommit(false);
result = userDao.insertUser(conn, user);
//提交事务
conn.commit();
}catch (Exception e){
try{
//回滚事务
conn.rollback();
}catch (SQLException e){
e.printStackTrace();
}
e.printStackTrace();
}finally{
if(conn != null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
return result;
}
}
public