`
tianhei
  • 浏览: 211646 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring采用Annotation方式实现AOP

阅读更多

Spring可以采用Annotation方式实现AOP,也可以采用配置文件方式实现AOP。本文讲解采用Annotation方式。

 

当采用Annotation的方式实现AOP时,需要引入除spring以外的以下jar包(请在附件下载):

aspectjlib-1.5.0.jar

aspectjweaver.jar

aopalliance-1.0.jar

 

面向接口编程:UserManager.java

package com.cos;

public interface UserManager {
	public void createUser();
    public void readUser();
    public void updateUser();
    public void deleteUser(int id);
}

实现类:UserManagerImpl.java

package com.cos;

public class UserManagerImpl implements UserManager {

	public void createUser() {
        System.out.println("-----------------createUser-------------------");
    }
    public void readUser() {
        System.out.println("-----------------readUser-------------------");
    }
    public void updateUser() {
        System.out.println("-----------------updateUser-------------------");
    }
    public void deleteUser(int id) {
        System.out.println("-----------------deleteUser-------------------");
    }
}

 切面类Aspect:

package com.cos;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

/*
 * 定义此类是切面类Aspect
 */
@Aspect		
public class SecurityHandler{

	/*
	 * 定义Pointcut 切入点 是个表达式 方法名随意,不允许有返回值和参数 
	 * 最后需要把这个Aspect和目标对象都配置在IoC容器里
	 */
	@Pointcut("execution(* create*(..)) || execution(* update*(..))")
	public void addMethod(){
		
	}

	/*
	 * 定义Advice 横切性关注点 此Advice是Before类型的
	 */
	@Before("addMethod()")	//标识在哪个切入点支入、Before Advice
	public void checkSecurity(){
		System.out.println("------安全性检查------");
	}
}

 spring 配置文件 applicationContext.xml:

<?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:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx" 
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
  http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
	
	<!-- 启用aspectj对Annotation的支持,否则spring不认识Aspect等Annotation -->
	<aop:aspectj-autoproxy/>
	
	<!-- 对Aspect的初始化 -->
	<bean id="securityHandler" class="com.cos.SecurityHandler"/>
	
	<bean id="userManagerImpl" class="com.cos.UserManagerImpl"/>
</beans>  

 测试类Client.java:

package com.cos;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Client {

	public static void main(String[] args) {
		BeanFactory beanFactory = new ClassPathXmlApplicationContext("applicationContext.xml");
		UserManager userManager = (UserManager)beanFactory.getBean("userManagerImpl");
		userManager.createUser();
		userManager.updateUser();
		userManager.readUser();
	}
}

 

 输出结果为:

------安全性检查------
-----------------createUser-------------------
------安全性检查------
-----------------updateUser-------------------

-----------------readUser-------------------

 

注:

目标对象UserManagerImpl一定要实现一个接口,原因是spring 的AOP用的就是jdk的动态代理机制,而jdk的动态代理机制要求目标对象一定要实现一个接口,这样代理对象也实现同样的这个接口,便完成了代理功能。

 

 

 

 

3
1
分享到:
评论

相关推荐

    Spring_Annotation_AOP

    在本资料"Spring_Annotation_AOP"中,我们将深入探讨Spring框架如何利用注解实现AOP,以及其背后的原理和实践应用。 面向切面编程(AOP)是一种编程范式,旨在提高代码的可维护性和可重用性,通过将关注点分离,...

    使用Spring的注解方式实现AOP

    本篇文章将深入探讨如何通过注解方式在Spring中实现AOP。 首先,我们需要了解AOP的基本概念。AOP是一种编程范式,它允许程序员定义“切面”,这些切面包含了一组相关操作,可以在多个对象或方法上统一实施。Spring ...

    spring aop实例annotation方法实现

    本实例将详细探讨如何通过注解(Annotation)来实现Spring AOP的方法拦截。 一、Spring AOP基础 Spring AOP是Spring框架的一部分,它提供了一种在运行时织入横切关注点(如日志、事务管理等)到目标对象的能力。AOP...

    spring学习之五“AOP概念及使用Annotation的实现”

    本篇“spring学习之五”主要介绍的是注解驱动的AOP实现。 1. **定义切面**:在Spring中,我们通常通过创建一个带有`@Aspect`注解的类来定义切面。在这个类中,我们可以定义切点和通知。例如: ```java @Aspect ...

    spring中自定义注解(annotation)与AOP中获取注解

    Spring AOP提供了两种主要的方式来实现这一点:基于XML的配置和基于注解的配置。 对于基于XML的配置,我们需要在`&lt;aop:config&gt;`标签内定义切点表达式和通知(advice),如下: ```xml &lt;aop:config&gt; &lt;aop:pointcut...

    基于annotation的aop实现

    基于Annotation的AOP实现是Spring框架的一个重要特性,它极大地简化了AOP的使用。在本篇文章中,我们将深入探讨基于Annotation的AOP实现,特别是动态代理的理念。 首先,了解什么是AOP。AOP的核心概念是“切面”...

    以注解方式模拟Spring IoC AOP

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

    简单spring aop 例子

    在Spring AOP中,切面主要通过两种方式实现:代理(Proxies)和织入(Weaving)。 1. **代理**:Spring AOP支持两种类型的代理:JDK动态代理和CGLIB代理。JDK代理用于实现了接口的类,而CGLIB代理则用于没有接口或...

    EJB+Annotation实现AOP的DEMO

    这篇博客"使用EJB+Annotation实现AOP的DEMO"主要介绍了如何在EJB中利用注解(Annotation)来实现AOP的功能。在Java EE中,EJB 3.0及后续版本引入了大量的注解,使得开发者可以免去编写XML配置文件,直接在代码中声明...

    利用 spring annotation AOP 反射 记录日志

    在Spring框架中,AOP主要通过代理模式实现,可以分为基于XML配置和基于注解两种方式。本例中,我们关注的是注解式AOP,它更加简洁且易于使用。 在Spring中,我们可以通过定义一个带有`@Aspect`注解的类来创建一个切...

    Spring 基于基于XML配置方式实现AOP

    本篇文章将重点讲解如何通过XML配置方式在Spring中实现AOP。 首先,了解AOP的基本概念是必要的。AOP的核心是切面(Aspect),它封装了多个相关操作,形成了一个关注点。切点(Pointcut)定义了这些操作应用到何处,...

    Spring AOP 常用的四种实现方式

    本篇文章将深入探讨Spring AOP的四种常见实现方式。 一、基于接口的代理(Interface-Based Proxy) 这是Spring AOP最基础的实现方式,适用于目标对象实现了特定接口的情况。Spring会创建一个代理对象,该对象实现...

    Spring 使用AspectJ 实现 AOP之前置通知小例子

    标题提到的"Spring 使用AspectJ 实现 AOP之前置通知小例子",指的是利用AspectJ在Spring中实现AOP的一种特定类型的通知——前置通知(Before advice)。前置通知在目标方法执行之前运行,但不会阻止方法的执行。这种...

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

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

    springboot spring aop 拦截器注解方式实现脱敏

    总结一下,通过上述步骤,我们已经在Spring Boot应用中利用Spring AOP和注解方式实现了数据脱敏。这个拦截器可以在不修改原有业务代码的情况下,确保敏感信息在响应给客户端之前得到处理,提高了应用的安全性。同时...

    Spring3.0.5扩展支持AOP获取HttpServletResponse

    在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员在不修改原有代码的情况下,插入新的功能或行为。在Spring 3.0.5版本中,Spring扩展了对AOP的支持,特别是在处理HTTP响应时,可以通过AOP来获取`...

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

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

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

    在Spring框架中,AOP(面向切...总之,Spring中的AOP注解方式使得我们可以更方便地实现代码的模块化和复用,提高代码的可维护性和灵活性。通过理解和实践上述步骤,你将能够熟练地在Spring项目中应用AOP进行功能扩展。

Global site tag (gtag.js) - Google Analytics