了解一下基础知识:
切面(Aspect):关注点的模块化,关注点可能横切多个对象
连接点(Join point): 运用程序执行过程中需要入插切面模块的某一点, 主要强调的是一个具体的”点”
概念,该点可以是一个方法、一个属性、构造函数、类静态初始化块,甚至一条语句。
切入点(Pointcut):一个或多个连接点,可以理解成一个点的集合
通知(Advice):定义切面中实际的逻辑实现,如日志的写入实际代码,或是安全检查的实际代码。
前置通知(before advice):在方法的调用之前
最终通知(after advice):在方法的最后,并且在所有其它通知之后
环绕通知(around advice):分别在方法的调用之前和之后
后置通知(after returning advice):在方法的最后
异常通知(after throwing advice):在方法出现异常时
第一步,导入相关的jar包:aspectjweaver-1.6.8.jar(提供注解org.aspectj.lang.annotation.Aspect等)、spring-aop-3.0.4.RELEASE.jar(提供自动代理创建器org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator)、aopalliance-1.0.jar(提供拦截器功能)。
第二步,配置springMVC-servlet.xml
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
<!--配置aop自动创建代理-->
<aop:aspectj-autoproxy/>
<bean id="aopSecurity" class="com.aliks.test.aop.util.SecurityHandlerAOP"/>
第三步,AOP类处理
@Component
@Aspect
public class SecurityHandlerAOP {
private int num=0;
// 在执行指定方法前执行
@Before("execution(* com.aliks.test.mvc.service.*.*(..))")
protected void checkUserSecurity() {
System.out.println("在方法执行前通知!");
num++;
System.out.println("访问次数:"+num);
}
@After("execution(* com.aliks.test.mvc.service.*.*(..))")
protected void checkResult() {
System.out.println("在方法执行后通知!");
}
}
第四步,需要切面的类和方法
@Service("userManager")
public class UserManagerImpl implements UserManager {
@Override
public void addUser(String name) {
System.out.println("add user name:"+name);
}
第五步:controller层请求进入
@Controller
public class HelloWoldController {
@Autowired
private UserManager userManager;
@RequestMapping("/hello")
public ModelAndView helloWold()
{
System.out.println("start");
String message =new ToolTest().getString();
//调用service层
//增加用户名称测试
userManager.addUser("admin Test");
return new ModelAndView("hello","message",message);
}
}
第六步:测试结果
在方法执行前通知!
访问次数:1
add user name:admin Test
在方法执行后通知!
切入点(Pointcut):一个或多个连接点,可以理解成一个点的集合
// 使用一个返回值为void,方法体为空的方法来命名切入点
@Pointcut("execution(* com.aliks.test.mvc.service.*.*(..))")
private void check(){}
// 在执行指定方法前执行
@Before("check()")
protected void checkBefore() {
System.out.println("Before-在方法执行前通知!");
num++;
System.out.println("Before-访问次数:" + num);
}
分享到:
相关推荐
Spring AOP(面向切面编程)是 Spring 框架的一个重要部分,它允许开发者在不修改源代码的情况下,实现跨切面的关注点,如日志、事务管理等。`spring-aop-3.0.xsd` 是 Spring AOP 的 XML 配置文件,定义了与 AOP ...
Spring框架自其诞生以来,便以其独特的依赖注入(DI)和面向切面编程(AOP)能力在Java开发领域独树一帜。随着版本的迭代,Spring不断融入新的功能和技术,其中Spring 3.0的发布标志着该框架迈入了一个全新的阶段,...
Spring 3.0版本是其发展的一个重要里程碑,引入了许多新特性和改进,尤其是在面向切面编程(Aspect-Oriented Programming,简称AOP)方面。面向切面编程是一种编程范式,它允许开发者将关注点分离,比如日志、事务...
在"struts2.21-spring3.0-hibernate3.6 全部jar包"中,包含的是这三个框架的特定版本,即Struts2的2.21版、Spring的3.0版和Hibernate的3.6版。这些版本在当时是相对稳定的,并广泛用于各种项目。 Struts2.21主要...
Spring 3.0是Spring框架的一个重要版本,它在2009年发布,为Java开发者带来了许多新特性和改进。这个版本标志着Spring框架在企业级应用开发中的进一步成熟,加强了对Java EE 6的支持,并引入了许多现代化的开发实践...
Spring 框架以其强大的依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)能力而著名,它简化了Java EE(现在称为Java EE,即Java Enterprise Edition)应用的复杂性。...
2. **Spring Framework**:Spring框架是SpringMVC的基础,它提供了依赖注入(DI)和面向切面编程(AOP)等核心特性,以及对数据库访问、事务管理、远程服务调用等的支持。Spring的IoC容器管理对象的生命周期和依赖...
标题"Spring3.0AOP所需jar包"指的是为了在Spring 3.0及以上版本中使用AOP功能,我们需要额外添加一些jar包到项目中。这些jar包通常包括Spring AOP模块本身以及其依赖的相关库。Spring框架的每个主要模块都有对应的...
2. **AOP(面向切面编程)**:Spring 3.0提供了更强大的AOP支持,允许开发者定义横切关注点,如日志记录、事务管理等,将这些关注点与业务逻辑解耦。 3. **JSR-303/JSR-349(Bean Validation)集成**:Spring 3.0...
在`<bean>`元素中,`lookup-method`和`replaced-method`属性的引入,使得在运行时动态查找或替换bean的方法成为可能,这是对AOP(面向切面编程)的一种补充,提供了更细粒度的控制。 除此之外,`<util>`命名空间在...
这些jar包包含了Spring3.0运行所需的所有依赖,包括Spring的核心库、AOP模块、ORM(对象关系映射)模块、Web模块等。例如,`spring-core.jar`包含Spring的基础类和工具,`spring-beans.jar`提供了Bean的配置和管理,...
- Spring框架的核心概念,如IoC、AOP、事务管理等。 - ORM框架,如Hibernate、MyBatis的使用和原理。 - 微服务架构下常用的Spring Cloud组件及其功能。 5. 设计模式: - 常见的设计模式及其在Java编程中的应用...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员定义横切关注点,如日志、事务管理、性能监控等,并将它们模块化为可重用的组件,这些组件可以在程序的不同部分透明地插入。在Spring 3.0及以上...
Spring 3.0引入了AOP(Aspect-Oriented Programming,面向切面编程)的增强,`aop.xsd`定义了与切面相关的配置元素,如`<aop:config>`、`<aop:pointcut>`等,使得我们可以声明切面、定义切入点表达式,实现代码的横...
在下载的"spring3.0 全部jar包"中,"dist"文件夹可能包含了所有Spring 3.0框架运行所需的库文件,包括核心容器、AOP、ORM、Web、Test等多个模块的jar包。这些jar文件是构建和运行Spring 3.0应用的基础,它们包含了...
这个压缩包中的"spring3.0"文件很可能包含了所有需要的Spring 3.0框架相关的jar包,包括核心库、AOP、Web、MVC等模块的jar,是搭建Spring 3.0环境所必需的。开发者可以通过这些jar包快速构建基于Spring 3.0的应用,...
4. **spring-aop**:提供了AOP编程模型,实现切面的定义和执行。 5. **spring-expression**:Spring表达式语言(SpEL),用于在运行时查询和操作对象图。 6. **spring-web**:支持Web应用,包括HTTP请求处理、MVC...
首先,Spring-3.0.xsd是Spring XML配置的基石,它定义了一系列元素和属性,使得开发者能够以声明式的方式定义Bean、依赖注入、AOP代理、事务管理等核心功能。在Spring 3.0版本中,为了提升可读性和可维护性,引入了...
在面向切面编程(AOP)方面,Spring 3.0引入了更多的注解,如@Aspect、@Before、@After、@Around等,使得编写切面变得更加简单。同时,增强了对JSR-303 Bean Validation的支持,可以在切面中进行数据验证。 4. **...
Spring 3.0的AOP模块提供了声明式事务管理,允许开发者通过注解如@Transactional实现事务控制,简化了事务管理的代码。同时,增强了对AspectJ的支持,使得切面的定义更为灵活。 三、数据访问/集成(Data Access/...