spring AOP进行自动拦截,常用的比如事务处理。代码如下
<bean id="BeanProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <!-- 对类名以Dao结尾的类进行代理 --> <value>*Dao</value> </property> <!-- 对代理类进行加载拦截器(实现通知的过程) --> <property name="interceptorNames"> <list> <value>transactionInterceptor</value> </list> </property> </bean>
再比如eHcache缓存AOP拦截:
<!-- Bean自动代理处理器配置 --> <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <!-- 配置需要进行日志记录的Service和Dao <value>*Dao</value> --> <!-- 配置所有Service结尾命名的Bean,即所有Service层的类都要 经过exceptionHandler异常处理类 --> <value>*Dao</value> <!-- Service层的Bean ID 命名要以Service 结尾 --> </list> </property> <property name="interceptorNames"> <list> <value>methodCachePointCut</value> <value>methodCacheDestory</value> </list> </property> </bean>
这两个例子其实是一样的,第一个属性beanNames是对需要的地方进行配置,第二个属性interceptorNames是拦截器的名称,比如说transactionInterceptor的配置如下:
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager" ref="transactionManager"></property> <property name="transactionAttributes"> <props> <!-- PROPAGATION_SUPPORTS: 如果已经存在事务,则加入事务;如果没有事务,则以非事务的方式执行; PROPAGATION_MANDATORY: 使用当前事务, 如果没有, 则抛出异常; PROPAGATION_REQUIRED: 新建事务,如果当前有事务, 则挂起; P ROPAGATION_NOT_SUPPORTED:以非事务的方式执行, 如果当前有事务, 则挂起; PROPAGATION_NEVER:以非事务的方式执行, 如果当前有事务,则抛出异常; +/-Exception</prop> + 表示异常出现时事物提交 - 表示异常出现时事务回滚 --> <prop key="find*">PROPAGATION_SUPPORTS,readOnly</prop> <prop key="del*"> PROPAGATION_SUPPORTS</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop> </props> </property> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean>
很好理解的。
相关推荐
在Spring XML配置文件中,我们可以定义以下元素来实现AOP配置: - `<aop:config>`:声明AOP配置。 - `<aop:pointcut>`:定义切入点表达式,例如`execution(* com.example.service.*.*(..))`表示匹配...
Spring AOP 配置事务方法 Spring AOP(Aspect-Oriented Programming,面向方面编程)是一种编程范式,它允许开发者在不修改源代码的情况下,增强和修改应用程序的行为。 Spring AOP 提供了一种灵活的方式来实现事务...
以下是一个简单的Spring AOP配置文件示例: ```xml <aop:config> <aop:aspect id="loggingAspect" ref="loggingAdvice"> <aop:before method="beforeMethod" pointcut-ref="businessMethods"/> <aop:after-...
**Spring AOP配置实例** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的核心组件之一,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP允许开发者定义“切面”,这些...
### Spring之AOP配置文件详解 #### 一、前言 在Java开发中,Spring框架因其强大的功能和灵活的配置而被广泛应用于企业级应用的开发。其中,面向切面编程(Aspect Oriented Programming,简称AOP)是Spring框架的...
本例中,我们关注的是如何利用Spring AOP配置一个简单的切面,该切面在`DukePerformer`类的`perform`方法执行前后,插入观众的行为,如找座位、关手机、鼓掌以及不满意的反应。通过这种方式,我们将这些行为抽象为...
### Spring AOP配置详解 #### 一、Spring AOP配置概览 面向切面编程(Aspect-Oriented Programming,简称AOP)是Spring框架的重要特性之一,它通过将业务逻辑中的横切关注点(Cross-cutting Concerns)与核心业务...
2. **注解配置**:Spring 2.5引入了基于注解的AOP配置,可以在切面类上使用@Aspect注解,@Before、@After、@AfterReturning、@AfterThrowing和@Around定义通知,@Pointcut定义切点。例如: ```java @Aspect ...
**Spring AOP配置与管理** 在Java开发中,Spring框架以其强大的功能和灵活性深受开发者喜爱。其中,AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架的一个重要特性,它允许开发者定义“切面”,即...
**Spring AOP 配置小节** 在Java开发中,Spring框架因其强大的功能和灵活性而备受推崇,其中AOP(面向切面编程)是其重要特性之一。AOP允许我们把关注点分离到非核心业务逻辑之外,如日志、事务管理等,使得代码...
### Spring AOP配置详解 #### 一、Spring AOP简介 Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要模块,它提供了强大的AOP功能支持。AOP是一种编程范式,旨在将横切关注点(如...
Spring AOP 配置 Spring AOP(Aspect-Oriented Programming)是一种面向方面编程技术,通过将关注点模块化,提高了系统的可维护性和可扩展性。下面将详细介绍 Spring AOP 的配置和实现。 一、基本概念 * 切面...
Spring aop 配置 Spring aspect 配置 Spring advisor 配置 Spring pointcut 配置
Spring AOP配置 Spring AOP的配置可以通过XML或注解方式进行: - **XML配置**: - 在`<aop:config>`标签内定义切面,`<aop:pointcut>`定义切入点,`<aop:advisor>`定义通知。 - `<aop:aspect>`标签用于定义完整...
2. **配置Spring容器**:在Spring的XML配置文件中启用AOP支持,通过`<aop:config>`标签开启,并可以定义切点(pointcut)和通知(advice)。 3. **定义切点**:使用`<aop:pointcut>`定义要拦截的方法或类。切点...
在使用Spring AOP时,我们可以通过XML配置或注解的方式来定义切面。例如,可以使用`@Aspect`注解定义一个切面类,`@Before`、`@After`等注解来声明通知,`@Pointcut`定义切点表达式。 在实际开发中,Spring AOP广泛...
Spring AOP配置 在Spring XML配置文件中,可以声明切面和通知,如下: ```xml <aop:config> <aop:aspect id="loggingAspect" ref="loggingService"> <aop:before method="logBefore" pointcut="execution(* ...
在提供的压缩包文件"springAOP"中,可能包含了以下内容: - **切面类(Aspect Class)**:包含切点和通知的Java类,可能使用了`@Aspect`注解。 - **目标类(Target Class)**:被AOP代理的对象,通常包含业务逻辑。...