定义切面类:
public class SecurityHandler {
private void checkSecurity() {
System.out.println("----------checkSecurity()---------------");
}
}
配置文件中这样子写:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="securityHandler" class="com.bjsxt.spring.SecurityHandler"/>
<bean id="userManager" class="com.bjsxt.spring.UserManagerImpl"/>
<aop:config>
<aop:aspect id="security" ref="securityHandler">
<aop:pointcut id="allAddMethod" expression="execution(* add*(..))"/>
<aop:before method="checkSecurity" pointcut-ref="allAddMethod"/>
</aop:aspect>
</aop:config>
</beans>
测试:
public static void main(String[] args) {
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
UserManager userManager = (UserManager)factory.getBean("userManager");
userManager.addUser("张三", "123");
userManager.deleteUser(1);
}
这样就可以在调用addUser之前执行checkSecurity方法了
如果我们需要获得add*(..)的传入的参数
可以通过Advice中添加一个JoinPoint参数,这个值会由spring自动传入,从JoinPoint中可以取得
参数值、方法名等等
如下:修改SecurityHandler 类
import org.aspectj.lang.JoinPoint;
public class SecurityHandler {
private void checkSecurity(JoinPoint joinPoint) {
Object[] args = joinPoint.getArgs();//获得addUser中传入的参数
for (int i=0; i<args.length; i++) {
System.out.println(args[i]);//打印出addUser中传入的参数,这里是张三和123
}
System.out.println(joinPoint.getSignature().getName());//获得被调用的方法名,这里是打印出addUser
System.out.println("----------checkSecurity()---------------");
}
}
分享到:
相关推荐
以下是一个简单的Spring AOP配置文件示例: ```xml <aop:config> <aop:aspect id="loggingAspect" ref="loggingAdvice"> <aop:before method="beforeMethod" pointcut-ref="businessMethods"/> <aop:after-...
### Spring之AOP配置文件详解 #### 一、前言 在Java开发中,Spring框架因其强大的功能和灵活的配置而被广泛应用于企业级应用的开发。其中,面向切面编程(Aspect Oriented Programming,简称AOP)是Spring框架的...
本实例将探讨如何在Spring中使用XML配置文件和AOP标签来实现这一功能,特别是针对Spring 2.5及以上版本。 首先,我们来看XML配置文件方式。在Spring中,AOP可以通过`<aop:config>`标签来配置。下面是一个基本的AOP...
Spring框架是Java领域中极为重要的一个组件,它为开发者提供了许多便利,其中之一就是对面向切面编程(Aspect Oriented Programming,简称AOP)的支持。AOP允许我们分离关注点,将横切关注点(如日志、事务管理等)...
总之,Spring.NET 的 AOP 功能通过配置文件提供了一种灵活的方式来管理和组织横切关注点,提高了代码的可读性和可维护性。理解和熟练使用这一特性,对于提升 .NET 应用程序的质量和可扩展性至关重要。
3. spring-aspects-4.1.6.RELEASE.jar:这个jar文件包含了Spring对AspectJ的集成支持。AspectJ是一个全面的面向切面编程(AOP)框架,它可以编译时或运行时织入切面。Spring Aspects提供了与AspectJ的无缝集成,使得...
本篇文章将详细探讨Spring实现AOP的四种主要方法:基于代理的方式、基于AspectJ的注解方式、基于XML的AOP配置以及基于Java的AOP配置。 1. 基于代理的实现 Spring的AOP支持两种代理类型:JDK动态代理和CGLIB代理。...
Spring的AOP支持主要体现在XML配置文件中,其中包含了多种标签来定义切面、通知(advises)、切点(pointcuts)等。以下是一些关键的AOP标签及其用途: 1. `<aop:config>`:这是AOP配置的根元素,用于开启AOP功能。...
1. **引入依赖**:在`pom.xml`或`build.gradle`文件中添加Spring AOP和AspectJ的依赖。对于Maven,添加以下依赖: ```xml <groupId>org.springframework.boot <artifactId>spring-boot-starter-aop ``` 2. ...
在Spring中,我们可以通过XML配置文件来定义切面、切入点和通知。以下是一个基本的XML配置示例: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
无需在XML配置文件中显式声明每一个bean,只需指定基础包名,Spring会自动搜索包及其子包下的所有@Component、@Service、@Repository和@Controller注解标记的类,并将它们注册为bean。这一功能大大简化了配置,提高...
Spring AOP通过XML配置文件提供了灵活的方式来定义和管理切面、切入点和通知,使得我们可以轻松地在应用程序中实现横切关注点的解耦。了解和掌握Spring AOP的配置实现,有助于提升我们构建松散耦合、易于维护的系统...
在Spring配置文件中,我们可以通过以下方式引用`spring-aop.xsd`: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop=...
Context 文件是 Spring AOP 的核心配置文件,用于定义应用程序的配置信息。在上面的配置文件中,我们可以看到 Context 文件中定义了多个命名空间,包括 beans、aop、tx、context 等这些命名空间用于定义不同的配置...
在传统的AOP配置中,我们需要定义切入点表达式和通知(advice)在XML配置文件中。然而,使用注解可以让这些配置变得更加直观和易于维护。例如,我们可以使用`@Aspect`注解来定义一个切面类,`@Before`、`@After`、`@...
XML配置文件或者注解可以用来声明对象及其相互依赖关系,Spring容器会根据这些信息实例化和装配对象。 Spring Context是Spring框架的一个扩展,它建立在Core Container之上,提供了更多的企业级服务,如国际化、...
本示例提供了一种通过注解和配置文件两种方式实现Spring AOP的方法。 首先,我们来详细讲解通过注解实现Spring AOP。在Spring中,我们可以使用`@Aspect`注解来定义一个切面,这个切面包含了多个通知(advice),即...
在示例中,你可能会找到CXF相关的配置文件和代码,用于演示如何使用Spring集成CXF来发布和调用Web服务,例如JWS(Java Web Services)。 任务调度在许多应用中是必不可少的。Spring提供了TaskExecutor和Task...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...