个人理解中的 Spring AOP

一、前言:spring 是目前应用最广泛的web框架之一,不管你数据库用 mybatis 还是 hibernate,不管是struts还是 spring mvc 都会有 spring 的身影,ssh, ssm是目前使用较多的框架,现在spring 还出了 spring boot ,一个简化配置文件的框架,下面我们来聊聊Spring的核心Aop。


二、简介:

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。


三、使用场景:日志、事务、异常处理....


四、个人理解的aop:

权限控制,比如有十个页面,每个页面都要检查添加、编辑、删除按钮权限,原始的写法可能是:

public ModelAndView toAffiche(HttpServletRequest request, Integer menuId) {
	ModelAndView model = new ModelAndView();
        // 得到登陆用户
       User user = (User) request.getSession().getAttribute("USER");
	// 根据登陆的用户 查询按钮权限
	PowerBean pb = new PowerBean();
	pb.setUserId(user.getUserId());
	pb.setMenuId(menuId);
	PowerBean queryButPower = powerServiceImpl.queryButPower(pb);
        // 绑定数据
       model.addObject("butPower", queryButPower);
	model.setViewName("information/AfficheList");
	return model;
}
十个页面,那是不是要复制十次呢!有了aop就不用了,可以把查询按钮的权限提出来,放到 service 中,每次调用即可;


五、事务就用到了aop概念,下面介绍aop的几个概念:

1、切面(aspect):用来切插业务方法。

2、切入点(pointcut):业务类中指定的方法,作为切面切入的点。

3、连接点(joinpoint):是切面类和业务类的连接点,作为通知的参数来解析。

4、通知(advice):在切面类中,声明对业务方法做额外处理的方法。


六、aop与oop的区别:

OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。

AOP(面向切面编程)针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。



你可能感兴趣的:(Web)