`
zxmsdyz
  • 浏览: 127717 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Spring AOP使用配置介绍(二):切面的配置

阅读更多
在文章(一)中已经介绍了增强的使用,此篇介绍切面的配置方法。

创建静态普通方法名匹配的切面:
package com.maxjay.bank.advice;

import java.lang.reflect.Method;

import org.springframework.aop.ClassFilter;
import org.springframework.aop.support.StaticMethodMatcherPointcutAdvisor;

import com.maxjay.bank.service.UserService;

/**
 * 静态普通方法名匹配切面定义
 * @author Administrator
 *
 */
public class ValidateUserAdvisor extends StaticMethodMatcherPointcutAdvisor {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * 只对validateUser进行拦截
	 */
	public boolean matches(Method method, Class targetClass) {
		// 此次可以使用正则表达式来匹配
		return "validateUser".equals(method.getName());
	}

	public ClassFilter getClassFilter() {
		return new ClassFilter() {
			public boolean matches(Class clazz) {
				return UserService.class.isAssignableFrom(clazz);
			}
		};
	}
}


该类中的matches方法用来确定哪些方法需要执行增强中的内容;getClassFilter则确定哪些类需要被代理,这个方法在使用自动创建代理时会很有用。

在spring配置文件中配置切面:
	<bean id="validateUserAdvisor" class="com.maxjay.bank.advice.ValidateUserAdvisor">
		<property name="advice">
			<ref bean="loggerBeforeAdvice" />
		</property>
	</bean>

其中loggerBeforeAdvice是(一)中已经定义过的增强。
配置代理类:
	<!--
		配置单个bean的代理,在使用时不能用原有bean的id要用AppContext.get("singleLoginProxy")从context中获取(见测试类LoggerAdviceTest)
	-->
	<bean id="singleLoginProxy" class="org.springframework.aop.framework.ProxyFactoryBean">

		<property name="proxyInterfaces">
			<value>com.maxjay.bank.service.UserService</value>
		</property>

		<property name="interceptorNames">
			<list>
			     <value>validateUserAdvisor</value>							
         </list>
		</property>

		<property name="target">
			<ref bean="userService" />
		</property>

		<!-- 设置是否直接代理类(默认为false):true即使用cglib生成代理类,此时target对象不可以是JDK动态代理过的bean;false则使用JDK动态代理 -->
		<property name="proxyTargetClass">
			<value>true</value>
		</property>
	</bean>

注意此处配置与(一)中只有interceptorNames换成了我们刚刚配置的那个切面。

此外也可以使用静态正则表达式方法匹配来创建切面,代码如下
	<!-- 定义静态正则表达式方法名匹配切面 -->
	<bean id="regexpAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
		<property name="patterns">
			<list>
				<value>.*get.*</value>
			</list>
		</property>
		<property name="advice">
			<ref bean="loggerBeforeAdvice" />
		</property>
	</bean>

其中.*get.*是标准的正则表达式语言,它匹配那些名称种包含get的方法
       通过上面的步骤我们就定义完了切面了。
分享到:
评论

相关推荐

    springAop的配置实现

    Spring AOP通过XML配置文件提供了灵活的方式来定义和管理切面、切入点和通知,使得我们可以轻松地在应用程序中实现横切关注点的解耦。了解和掌握Spring AOP的配置实现,有助于提升我们构建松散耦合、易于维护的系统...

    day39-Spring 06-Spring的AOP:带有切点的切面

    在"day39-Spring 06-Spring的AOP:带有切点的切面"这个主题中,我们将深入探讨如何在Spring中实现带有切点的切面,以及它们如何与源码和工具结合使用。 首先,理解AOP的基本概念非常重要。AOP的核心是切面(Aspect...

    使用Spring配置文件实现AOP

    在Spring框架中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种强大的设计模式,它允许我们定义横切关注点,如日志、事务管理、权限检查等,然后将这些关注点与核心业务逻辑解耦。这篇教程将详细讲解...

    spring AOP切面编程

    Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它扩展了传统的面向对象编程,使得开发者可以方便地实现横切关注点,如日志、事务管理、性能监控等。在Spring中,AOP通过代理...

    spring切面AOP所使用的jar包

    - 定义切面:创建一个类作为切面,定义通知方法,并使用注解@Aspect来标识。 - 配置通知:使用@Before、@After、@AfterReturning、@AfterThrowing、@Around注解来指定通知的执行时机。 - 配置切入点:使用@...

    spring aop 自定义切面示例

    在Spring AOP(面向切面编程)中,自定义切面是实现业务逻辑解耦、增强代码可维护性的重要手段。AspectJ是一个强大的面向切面的编程库,它提供了与Spring AOP集成的能力,使我们可以编写更为灵活和模块化的代码。...

    利用SPring AOP配置切面的一个例子

    通过上述步骤,我们成功地使用Spring AOP配置了一个切面,用于在`DukePerformer`的表演前后执行观众的特定行为。这不仅增强了代码的可读性和可维护性,还体现了面向切面编程的核心思想——将横切关注点从业务逻辑中...

    Spring AOP面向切面三种实现

    Spring AOP支持AspectJ,可以通过引入AspectJ的库和配置,将AspectJ切面集成到Spring应用中。AspectJ提供了更丰富的语法,如`@Before`、`@After`、`@Around`等,使得切面的定义更加直观。 3. **注解驱动的切面** ...

    springAOP配置动态代理实现

    2. **注解配置**:Spring 2.5引入了基于注解的AOP配置,可以在切面类上使用@Aspect注解,@Before、@After、@AfterReturning、@AfterThrowing和@Around定义通知,@Pointcut定义切点。例如: ```java @Aspect ...

    Spring Aop使用实例

    - `ApplicationConfig`:Spring配置文件,启用AOP并配置切面。 - 测试类:用来验证AOP功能是否正确工作。 通过运行这个项目,你可以看到AOP如何在实际场景中工作,如何通过切面和通知来增强业务逻辑。 总的来说,...

    spring aop切面拦截指定类和方法实现流程日志跟踪

    本节将详细介绍如何使用Spring AOP实现流程日志跟踪,主要关注于如何通过AOP拦截特定的类和方法来进行日志记录。 ##### 3.1 配置Spring AOP 在Spring配置文件中定义切面和切入点表达式是非常关键的一步。一般来说...

    spring aop jar 包

    在使用Spring AOP时,我们可以通过XML配置或注解的方式来定义切面。例如,可以使用`@Aspect`注解定义一个切面类,`@Before`、`@After`等注解来声明通知,`@Pointcut`定义切点表达式。 在实际开发中,Spring AOP广泛...

    AOP_使用spring框架进行面向切面编程

    如果希望使用XML配置,可以在Spring配置文件中定义&lt;aop:aspect&gt;元素来声明切面,以及&lt;aop:before&gt;、&lt;aop:after&gt;等子元素来定义通知。 Spring AOP的优势在于其灵活性和易于使用。通过切面,我们可以把关注点分离,...

    JavaEE Spring AOP使用

    JavaEE Spring AOP(面向切面编程)是企业级应用开发中的重要技术,它允许开发者在不修改原有代码的情况下,通过“切面”来插入新的功能或者改变已有行为。Spring框架提供了对AOP的强大支持,使得我们可以方便地实现...

    Spring框架系列(9) - Spring AOP实现原理详解之AOP切面的实现.doc

    Spring AOP 是基于 IOC 的 Bean 加载来实现的,本文主要介绍 Spring AOP 原理解析的切面实现过程。AOP 切面的实现是将切面类的所有切面方法根据使用的注解生成对应 Advice,并将 Advice 连同切入点匹配器和切面类等...

    spring aop依赖jar包

    在实际开发中,你可以通过配置XML或使用注解来定义切面,以及通知的触发条件。例如,使用`@Aspect`注解定义切面类,使用`@Before`、`@After`等注解标记通知方法,使用`@Pointcut`定义切点表达式。 总的来说,Spring...

    spring aop所需jar包

    Spring AOP,即Spring的面向切面编程,是Spring框架中的一个重要组成部分,它提供了一种在不修改源代码的情况下对程序进行功能增强的技术。在Java应用程序中,AOP主要用于日志记录、性能统计、安全控制、事务管理等...

    Spring AOP配置事务方法

    配置事务管理切面: 在 Spring AOP 中,事务管理切面是通过 `&lt;aop:config&gt;` 元素来配置的。该元素用于定义一个切面,并指定该切面所关心的点cuts。在上面的配置文件中,我们可以看到 `&lt;aop:config&gt;` 元素用于定义一...

    Spring基础:Spring AOP简单使用

    - **XML配置**:在Spring的配置文件中,可以使用&lt;aop:config&gt;标签来定义切面,&lt;aop:pointcut&gt;定义切点,&lt;aop:advisor&gt;定义通知,&lt;aop:aspect&gt;将切点和通知关联起来。 - **注解配置**:Spring 2.5引入了基于注解的...

Global site tag (gtag.js) - Google Analytics