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 Web相关类的日志级别为DEBUG,以便我们能看到拦截器的执行过程。 启动类通常会包含`@SpringBootApplication`注解,该注解包含了`@EnableAutoConfiguration`,`@ComponentScan`和`@...
它定义了一些通用的AOP接口,比如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.intercept.MethodInvocation`,使得不同的AOP框架(如Spring和AspectJ)可以共享相同的拦截器(interceptors)。...
本例提供了一个简单的AOP拦截器实现,我们可以从这个基础出发,深入理解和探讨AOP的核心概念、工作原理以及其在实际开发中的应用。 首先,AOP的主要目标是解决程序中的横切关注点,如日志记录、事务管理、性能监控...
Spring AOP 拦截器 Advisor 是 Spring 框架中的一个重要概念,它与切面编程密切相关,用于实现细粒度的控制和增强应用程序的行为。在 Spring AOP 中,Advisor 是一个组合了通知(Advice)和切入点(Pointcut)的对象...
具体到Spring AOP拦截器的代码实现,本文通过创建TestInterceptor类来演示。这个类继承自HandlerInterceptorAdapter,然后重写其中的afterCompletion、postHandle等方法。在这个类中,可以在相应方法中添加自定义的...
在提供的压缩包中,可能包含了一个或多个测试类(Tests),这些测试类通常用来验证AOP拦截器的功能。它们可能包含模拟业务场景的方法,这些方法会被切面拦截并执行相应的通知。通过运行这些测试,我们可以确保AOP...
接下来,描述中提到了"MethodInterceptor",这是Spring AOP中的一种拦截器,用于拦截并修改代理对象的方法调用。不同于HandlerInterceptor,MethodInterceptor是基于代理的AOP,适用于拦截任何由Spring管理的对象,...
这个“spring AOP拦截方法小示例”是一个实际应用,展示了如何使用Spring AOP来拦截特定层的所有方法,并在调用前后以及出现异常时执行自定义逻辑。 首先,让我们了解AOP的基本概念。AOP的核心是切面(Aspect),它...
本实例主要探讨如何在Spring AOP中实现拦截器。 首先,我们来理解Spring AOP的基本概念。AOP的核心是代理,Spring提供了两种代理方式:JDK动态代理和CGLIB代理。JDK动态代理基于接口,当目标对象实现了接口时使用;...
本文将详细介绍如何使用AspectJ注解在Spring MVC中实现AOP拦截Controller方法,并提供一个具体的例子。 首先,我们需要了解Spring AOP的基础概念。AOP允许我们定义“切面”,这些切面包含了业务逻辑中横切关注点的...
例如,可能会有一个自定义的MyBatis拦截器用于分页查询,一个Spring AOP切面用于记录操作日志,Spring事务管理确保数据的一致性,而反射工具类可能用于动态加载配置或处理某些通用的反射任务。通过这些组件的组合,...
Spring MVC中的拦截器是基于AOP(面向切面编程)原理实现的,可以理解为对Controller方法调用的预处理和后处理。下面将详细探讨Spring拦截器的使用以及高级参数绑定和Controller返回值的相关知识。 首先,我们创建...
在Spring AOP中,拦截器调用的实现是通过动态代理机制来完成的,主要涉及到JDK的Proxy类和InvocationHandler接口。本文将详细解析Spring AOP如何利用这两个组件来实现拦截器链的调用。 首先,Spring在生成代理对象...
5. IntroductionInterceptor(引入拦截器):用于向目标对象添加新的字段或方法。 五、Spring AOP切入点 1. Pointcut:定义了匹配特定Joinpoint的规则,包括ClassFilter和MethodMatcher。 2. ClassFilter:匹配类...
标题中的"ssh+aop+log4j+日志拦截器+注解"涉及到的是Java Web开发中的几个核心组件和技术,这些技术在构建大型、分布式的企业级应用时常常被使用。下面将详细介绍这些知识点: 1. SSH (Spring, Struts, Hibernate)...
7. 代理(Proxy):AOP框架创建的对象,它实现了目标对象的所有接口并拦截方法调用以执行通知。 在Spring配置文件中,我们可以通过以下方式引用`spring-aop.xsd`: ```xml <beans xmlns="http://www.spring...
从上述配置可以看出,Spring AOP主要是通过`ProxyFactoryBean`来创建代理对象,通过配置不同的拦截器来实现对目标对象方法的增强。这种配置方式非常灵活,可以根据实际需求动态地添加或修改拦截器,从而实现特定的...
AOP拦截器在Spring中主要通过`HandlerInterceptor`接口或者`@AspectJ`注解来实现。下面我们将详细探讨这两种实现方式。 1. **基于`HandlerInterceptor`的拦截器** - `HandlerInterceptor`是Spring MVC中的一个接口...
它涵盖了从JPA的基本使用到AOP拦截器的实现,再到分库分表策略的设计,对于提升大型项目的数据库性能有着重要的参考价值。开发者可以根据自身的业务场景,调整和优化这个示例,以满足特定的需求。
在Spring AOP中,切面可以由Advisor(通知+切入点)或者拦截器实现。 - **通知**(Advice):定义了切面如何改变程序行为的信息,它是在特定连接点上执行的动作。 - **切入点**(Pointcut):定义了何时何处执行通知...