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

Spring采用配置文件方式实现AOP

阅读更多

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

 

以配置文件方式实现AOP的时候,切面类就是一个普通的类,需要在配置文件中配置过后才成为切面类。

 

面向接口编程 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-------------------");
    }
}

切面类 SecurityHandler.java:

package com.cos;
//切面类	
public class SecurityHandler{

	public void checkSecurity(){
		System.out.println("----------阿斯多夫--------");
	}
}

配置文件 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">
	
	<!-- 切面类,在aop的配置中会用到此id -->
	<bean id="securityHandler" class="com.cos.SecurityHandler"/>
	
	<bean id="userManagerImpl" class="com.cos.UserManagerImpl"/>
	
	<!-- spring AOP 配置 -->
	<aop:config>
	   <!-- 配置切面类,ref为切面类的引用,在上面应该已经配置完毕。id任意 -->
	   <aop:aspect id="aspectid" ref="securityHandler">
	       <!-- 定义切入点 expression为配置表达式 -->
	       <aop:pointcut id="pointcutid" expression="execution(* com.cos.UserManagerImpl.create*(..))"/>
	       <!-- 定义关注点 method为切面类里的方法,pointcut-ref为pointcut的id -->
	       <aop:before method="checkSecurity" pointcut-ref="pointcutid"/>
	   </aop:aspect>
	</aop:config>
</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的动态代理机制要求目标对象一定要实现一个接口,这样代理对象也实现同样的这个接口,便完成了代理功能。

 

切面类的关注点方法可以添加一个参数 JoinPoint,此参数的实例可以获得目标方法的参数和方法名等:

package com.cos;

import org.aspectj.lang.JoinPoint;

//切面类	
public class SecurityHandler{

	public void checkSecurity(JoinPoint joinPoint){
	    System.out.println("method====="+joinPoint.getSignature().getName());
	    for(Object o : joinPoint.getArgs()){
	        System.out.println(o.getClass().getName());
	    }
		System.out.println("----------阿斯多夫--------");
	}
}

 

 

0
1
分享到:
评论

相关推荐

    使用Spring配置文件实现AOP

    这篇教程将详细讲解如何通过Spring的配置文件来实现AOP。 一、理解AOP概念 AOP的核心思想是将分散在各个模块中的交叉性代码(如日志、事务处理)抽取出来,形成独立的切面,以便于复用和维护。它提供了一种模块化的...

    Spring之AOP配置文件详解

    ### Spring之AOP配置文件详解 #### 一、前言 在Java开发中,Spring框架因其强大的功能和灵活的配置而被广泛应用于企业级应用的开发。其中,面向切面编程(Aspect Oriented Programming,简称AOP)是Spring框架的...

    Spring学习笔记(16)----使用Spring配置文件实现AOP

    在本篇Spring学习笔记中,我们将深入探讨如何利用Spring配置文件来实现面向切面编程(AOP)。面向切面编程是Spring框架的核心特性之一,它允许我们把关注点分离,将横切关注点(如日志、事务管理、权限控制等)与...

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

    在Spring的配置文件中,我们需要引入AOP的命名空间。这可以通过添加`&lt;aop:config&gt;`或`&lt;aop:aspectj-autoproxy&gt;`元素来完成。前者使用Spring AOP的原生API,后者则使用AspectJ的自动代理机制。 2. **定义切面**: ...

    spring对AOP的支持(使用Spring的配置文件来演示)

    总结来说,Spring的AOP功能使得我们可以优雅地处理系统中的横切关注点,通过配置文件定义切面、切点和通知,实现代码的模块化和解耦。通过学习和实践,我们可以更高效地利用AOP提升软件开发的效率和质量。

    spring学习之六“AOP使用spring静态配置文件的实现”

    3. **Spring AOP的实现方式**: - **基于XML的配置**:在Spring的配置文件中定义切面、通知、切点等。 - **基于注解的配置**:使用注解如`@Aspect`、`@Before`、`@After`等直接在类和方法上声明切面和通知。 4. ...

    spring_aop xml方式实现aop

    首先,我们需要在Spring配置文件中启用AOP支持,添加`&lt;aop:config&gt;`标签。这个标签告诉Spring我们要使用AOP功能: ```xml &lt;aop:config&gt; &lt;!-- 这里将添加切点、通知和Advisor等内容 --&gt; &lt;/aop:config&gt; ``` 接下来...

    springAop的配置实现

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

    spring-aop标签和配置文件两种方式实例

    本实例将探讨如何在Spring中使用XML配置文件和AOP标签来实现这一功能,特别是针对Spring 2.5及以上版本。 首先,我们来看XML配置文件方式。在Spring中,AOP可以通过`&lt;aop:config&gt;`标签来配置。下面是一个基本的AOP...

    Spring AOP配置事务方法

    Context 文件是 Spring AOP 的核心配置文件,用于定义应用程序的配置信息。在上面的配置文件中,我们可以看到 Context 文件中定义了多个命名空间,包括 beans、aop、tx、context 等这些命名空间用于定义不同的配置...

    Spring实现AOP的4种方式

    在Spring的XML配置文件中,可以使用&lt;aop:config&gt;元素来定义切面,&lt;aop:pointcut&gt;定义切点表达式,&lt;aop:advisor&gt;定义通知,&lt;aop:aspect&gt;定义切面。这种方式虽然相对繁琐,但清晰地展示了各个组件之间的关系,对于...

    spring aop demo 两种实现方式

    压缩包中的"aop"文件可能包含了一个简单的Spring AOP示例项目,包括了上述两种实现方式的源代码和配置文件。下载后,可以直接运行以观察AOP如何工作。 总结来说,Spring AOP提供了一种强大的方式来实现横切关注点,...

    springAOP配置动态代理实现

    动态代理则是Spring AOP实现的核心技术之一,它允许我们在运行时创建具有额外行为的对象。下面将详细阐述Spring AOP的配置以及动态代理的实现。 一、Spring AOP基础知识 1. **什么是AOP**:AOP是一种编程范式,...

    Xml文件配置实现AOP通知

    首先,我们需要在Spring配置文件中启用AOP代理,通过`&lt;aop:config&gt;`标签开启: ```xml &lt;aop:config&gt; &lt;!-- 配置将要织入的通知 --&gt; &lt;/aop:config&gt; ``` 接下来,我们创建一个切点(Pointcut),定义哪些方法将被...

    spring注解方式实现aop

    在Spring中,AOP主要分为两种实现方式:基于XML配置和基于注解。本示例主要探讨注解方式。 1. **定义切面(Aspect)** 切面是关注点的模块化,它包含通知(Advice)和切入点(Pointcut)。在Spring中,我们可以...

    Spring注解方式实现AOP demo

    4. `.project`文件:Eclipse项目配置文件,描述了项目的属性和构建规则。 5. `.classpath`文件:记录了项目的类路径信息,包括库依赖等。 在Spring AOP中,我们主要使用以下注解: 1. `@Aspect`:标记一个类为切面...

    spring-boot aop

    1. **引入依赖**:在`pom.xml`或`build.gradle`文件中添加Spring AOP和AspectJ的依赖。对于Maven,添加以下依赖: ```xml &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-aop ``` 2. ...

    Spring AOP、IOC、cxf、任务调度所需jar包以及配置文件

    Spring提供了基于注解和XML配置的AOP实现。 接下来,CXF是一个开源服务框架,常用于构建和消费Web服务。它支持JAX-WS和JAX-RS标准,可以方便地创建SOAP和RESTful服务。在示例中,你可能会找到CXF相关的配置文件和...

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

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

Global site tag (gtag.js) - Google Analytics