1.AOP
面向方面编程
OOP:
面向对象编程
OOP:主要是关于对象怎么封装的问题
AOP:为程序的某个切面进行的通用处理
2.spring中两大核心概念:
IOC:依赖注入
AOP:对程序的切面作统一的处理
3.使用AOP的”前通知“
A.面向接口
B.定义通知类
C.在配置文件中注入相关节点
4.拦截器
<bean id="doNow" class="windy.demo.DoNow"></bean>
<bean id="dobefore" class="windy.demo.DoAdvice"></bean>
<bean id="doAdvice" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>windy.demo.Ido</value>
</property>
<property name="target">
<ref bean="doNow"/>
</property>
<property name="interceptorNames">
<value>dobefore</value>
</property>
</bean>
先写一个拦截器
实现了org.springframework.aop.MethodBeforeAdvice接口
在before方法里做拦截后的逻辑处理
通过ProxyFactoryBean这个类来进行拦截控制
当得到的loginAdvice中的login对象方法每调用一次,都会使用拦截器loginbefore的方法
interceptorNames是绑定的拦截器的名字(要求是String类型的,这里用value标签)
proxyInterfaces是以某种接口来返回 这里是Ido
target是需要拦截器的对象,被管理的对象
同样的,也可以使用ProxyFactoryBean来进行异常处理等事项
这里也需要一个Advice
实现org.springframework.aop.ThrowsAdvice类
里面的方法可以为
public void afterThrowing(ArithmeticException e);
public void afterThrowing(Method method,Object[] args,Object target,NullPointerException e);
从Spring API中可以看到
There aren't any methods on this interface, as methods are invoked by reflection. Implementing classes should implement methods of the form:
afterThrowing([Method], [args], [target], Throwable subclass)
只有最后一个参数是必须的
5.返回通知AfterReturningAdvice
实现org.springframework.aop.AfterReturningAdvice
此接口中需要实现的方法如下:
public void afterReturning(Object returnvalue, Method m, Object[] arg2,
Object target) throws Throwable {
System.out.println(target.getClass().getName()+"类中"+m.getName()+"方法被调用,其返回值为:"+returnvalue);
}
6.批量拦截类NameMatchMethodPointcutAdvisor
虽然拦截器实现MethodBeforeAdvice,但是在配置的时候可以这么配置:
<bean id="userBefore" class="com.sun.demo.UserDaoBeforeAdvice"></bean>
<bean id="log" class="com.sun.demo.Log"></bean>
<bean id="named" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
<property name="advice">
<ref bean="userBefore"/>
</property>
<property name="mappedNames">
<list>
<value>del*</value>
</list>
</property>
</bean>
这里的list就是需要匹配拦截的字符串 比如所有以del开头的方法都会被拦截器抓到
分享到:
相关推荐
Spring AOP 拦截器 Advisor Spring AOP 拦截器 Advisor
springboot spring aop 拦截器 注解方式实现脱敏(涉及到:pom.xml -->application.properties --->启动类-->拦截器)
本篇文章主要介绍了详解Spring AOP 拦截器的基本实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Spring源代码解析(七):Spring_AOP中对拦截器调用的实现.doc
非常简单的aop例子,可以从该离子出发隐身出很多其他的问题的思考。
内含有mybatis 拦截器实现的分页代码,spring 的事务和aop 测试、和反射工具类
常用拦截 拦截器HandlerInterceptor 拦截器MethodInterceptor 添加依赖 创建启动类 创建拦截器类 创建控制器 监控control请求耗时,提高性能
spring拦截器,高级参数绑定,controller返回值
Spring-AOP-利用java中的动态代理和Spring的拦截器做到AOP
Spring AOP四种创建通知(拦截器)类型
SpringAOP原理及拦截器.pdf
SpringAOP原理及拦截器.docx
SpringAOP原理及拦截器.doc
AOP拦截器示例,告诉我们初学者理解aop,通过一个银行转帐说明问题。
本篇文章主要介绍了spring boot如何使用spring AOP实现拦截器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Spring_AOP四种创建通知(拦截器)类型,介绍的比较详细,有实例
struts2+spring4+mybatis3,登录jquery ajax,struts拦截器,springAOP的例子。带部分注释。
spring中有很多概念和名词,比如过滤器、拦截器、aop等。这篇文章主要介绍了详解spring面向切面aop拦截器,有兴趣的可以了解一下。
一个基于配置文件的Spring AOP的实现。实现了前置通知,后置通知,以及拦截器的功能,配置中有详细的注释。
ssh+aop+log4j+日志拦截器+注解