`

spring对AOP的支持(采用Annotation的方式)

阅读更多
步骤:
1、spring依赖库
* SPRING_HOME/dist/spring.jar
* SPRING_HOME/lib/jakarta-commons/commons-logging.jar
* SPRING_HOME/lib/log4j/log4j-1.2.14.jar
* SPRING_HOME/lib/aspectj/*.jar

2、采用Aspect定义切面

2、在Aspect定义Pointcut和Advice

4、启用AspectJ对Annotation的支持并且将Aspect类和目标对象配置到Ioc容器中

注意:在这种方法定义中,切入点的方法是不被执行的,它存在的目的仅仅是为了重用切入点
即Advice中通过方法名引用这个切人点

AOP术语:
* Cross cutting concern
* Aspect
* Advice
* Pointcut
* Joinpoint
* Weave
* Target Object
* Proxy
* Introduction

定义一切面类(Aspect),SecurityHandler.java如下:
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

/**
 * 定义Aspect
 * @author Administrator
 *
 */
@Aspect
public class SecurityHandler {
	
	/**
	 * 定义Pointcut,Pointcut的名称就是allAddMethod,此方法不能有返回值和参数,该方法只是一个
	 * 标识
	 * 
	 * Pointcut的内容是一个表达式,描述那些对象的那些方法,比如下面对所有add和del方法需要切入
	 */
	@Pointcut("execution(* add*(..)) || execution(* del*(..))")
	private void allAddMethod(){};
	
	/**
	 * 定义Advice,标识在那个切入点何处织入此方法
	 */
	@Before("allAddMethod()")
	private void checkSecurity() {
		System.out.println("----------checkSecurity()---------------");
	}
	
}

配置到Ioc容器中:
<?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">
	<aop:aspectj-autoproxy/>//注意这里,必须加上
	<bean id="securityHandler" class="com.bjsxt.spring.SecurityHandler"/>           
	<bean id="userManager" class="com.bjsxt.spring.UserManagerImpl"/>
</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和deleteUser之前执行checkSecurity方法了。
分享到:
评论

相关推荐

    spring aop实例annotation方法实现

    在IT行业中,Spring AOP(面向切面编程)是一种强大的工具,它允许程序员在不修改原有业务代码的情况下,对程序进行功能增强。本实例将详细探讨如何通过注解(Annotation)来实现Spring AOP的方法拦截。 一、Spring...

    Spring_Annotation_AOP

    Spring框架以其模块化、灵活性和强大的功能而闻名,其中一项重要特性就是它对面向切面编程(Aspect-Oriented Programming,简称AOP)的支持。在本资料"Spring_Annotation_AOP"中,我们将深入探讨Spring框架如何利用...

    spring中aop的简单使用(Annotation方式)

    1. **启用AOP代理**:在Spring配置文件中,我们需要开启基于注解的AOP支持。如果使用XML配置,可以添加`&lt;aop:aspectj-autoproxy&gt;`元素;如果是Java配置,可以通过`@EnableAspectJAutoProxy`注解来启用。 2. **定义...

    spring 2.0使用AOP实例(基于Annotation的配置方式)

    以上就是Spring 2.0中使用AOP的一个基本实例,基于注解的配置方式使得AOP的使用更加直观和简洁。在实际开发中,我们可以根据需求灵活地定义切面和通知,以实现各种横切关注点的功能。 通过阅读提供的压缩包中的`src...

    Spring AOP + AspectJ annotation example

    AspectJ是Spring AOP支持的一种强大的、独立的AOP语言,它提供了注解来简化切面的定义。本篇将深入探讨如何结合Spring AOP和AspectJ注解进行实践。 首先,我们需要理解AOP的基本概念。面向切面编程是一种编程范式,...

    spring-aop.jar

    1. **AOP代理**:Spring AOP支持两种代理方式,即JDK动态代理和CGLIB代理。JDK代理用于实现接口的类,而CGLIB代理则用于未实现接口的类。spring-aop.jar包含了这些代理机制的相关类,如`org.springframework.aop....

    Spring采用Annotation方式实现AOP

    NULL 博文链接:https://tianhei.iteye.com/blog/978969

    Spring mvc Aop+annotation实现系统日志记录功能实现的jar包

    Spring mvc Aop+annotation实现系统日志记录功能实现的jar包asm-3.3.jar ,aspectjrt.jar , aspectjweaver.jar , cglib-nodep-2.1_3.jar , spring-aop.jar

    Spring_aop_annotation.zip

    通过对这个实践项目的学习,开发者可以深入理解Spring AOP的注解使用方式,以及如何在实际项目中有效地应用面向切面编程,提高代码的复用性和可维护性。通过这种方式,我们可以更专注于业务逻辑,而不是被系统级的...

    以注解方式模拟Spring IoC AOP

    Spring提供了两种主要的AOP实现方式:基于代理(Proxy-based)和基于注解(Annotation-based)。 - **基于代理的AOP**:Spring使用JDK动态代理或CGLIB动态代理创建目标对象的代理,代理对象在调用目标方法前后执行...

    学习Spring笔记_AOP_Annotation实现和XML实现

    Spring框架是Java开发中不可或缺的一部分,它以其强大的...通过阅读《学习Spring笔记_AOP_Annotation实现和XML实现》以及探索`Spring_AOP_XML`中的示例,开发者可以深入理解这两个实现方式,并在实际项目中灵活运用。

    简单spring aop 例子

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...

    spring-aop-annotation-log-all

    spring-aop-4.0.4.RELEASE.jar com.springsource.net.sf.cglib-2.2.0.jar com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar spring-aspects-4.1.2.RELEASE.jar ...

    Spring AOP面向方面编程原理:AOP概念

    Spring AOP支持多种方式来定义切入点,包括但不限于方法名、类名、注解等。 5. **引入(Introduction)**:允许向被通知对象添加新的接口实现或者新的方法。例如,可以使用引入让任何对象实现`IsModified`接口,...

    Spring3.0.5扩展支持AOP获取HttpServletResponse

    在Spring 3.0.5版本中,Spring扩展了对AOP的支持,特别是在处理HTTP响应时,可以通过AOP来获取`HttpServletResponse`对象。`HttpServletResponse`是Servlet API中的核心接口,它用于封装服务器向客户端发送的响应...

    spring aop xml 实例

    首先,我们需要在Spring的配置文件中启用AOP支持。在`beans.xml`中添加如下代码: ```xml &lt;aop:config&gt; &lt;!-- 配置切点(Pointcut),定义哪些方法会被通知(Advice)拦截 --&gt; &lt;aop:pointcut id="myPointcut" ...

    spring 3.0 aop 实例

    你可以通过查看`org.springframework.aop.framework.ProxyFactoryBean`和`org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator`等类来了解其内部工作原理。 7. **工具辅助**:在...

    spring_AOP.rar_876.aop_java aop_spring_aop

    Spring AOP(面向切面编程)是Java开发中Spring框架的核心特性之一,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。在SSH(Struts、Spring、Hibernate)经典企业级开发框架中,Spring AOP扮演着至...

    spring-aop源码

    Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下,对现有代码进行功能增强的技术。本文将深入探讨Spring AOP的源码,帮助开发者理解其...

    Spring用AspectJ开发AOP(基于Annotation)

    作为一名IT行业大师,我将详细介绍Spring用AspectJ开发AOP(基于Annotation),并对标题、描述、标签和部分内容进行详细解释。 标题: Spring用AspectJ开发AOP(基于Annotation) 标题明确地表明了本文的主题,即使用...

Global site tag (gtag.js) - Google Analytics