`
dengminhui
  • 浏览: 167973 次
  • 来自: ...
社区版块
存档分类
最新评论

Spring中AOP简单实践

阅读更多

目标对象的接口:Student.java

 

package myAop;

public interface Student {
    public void addStudent(String stuName);

}

 

目标类:StudentImpl.java

package myAop;


public class StudentImpl implements Student {

    
    public void addStudent(String stuName) {
        System.out.println("hello ," + stuName + ",welcome to spring");

    }

}

 

前置通知:BeforeAdvice.java

package myAop;

import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;


public class BeforeAdvice implements MethodBeforeAdvice {

    
    public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable {
        System.out.println("before advice");

    }

}

 

后置通知:AfterAdvice.java

package myAop;

import java.lang.reflect.Method;

import org.springframework.aop.AfterReturningAdvice;


public class AfterAdvice implements AfterReturningAdvice {

    @Override
    public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable {
        System.out.println("after  advice");

    }

}

 

环绕通知:CompareInterceptor.java

package myAop;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

/**
 * 
 */
public class CompareInterceptor implements MethodInterceptor {

    public Object invoke(MethodInvocation invocation) throws Throwable {
        Object result = null;
        String stu_name = invocation.getArguments()[0].toString();
        if (stu_name.equals("dragon")) {
            // 如果学生是dragon时,执行目标方法,
            result = invocation.proceed();
        } else {
            System.out.println("此学生是" + stu_name + "而不是dragon,不批准其加入.");
        }
        return result;
    }
}

 

配置文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	<bean id="beforeAdvice" class="myAop.BeforeAdvice"></bean>
	<bean id="afterAdvice" class="myAop.AfterAdvice"></bean>
	<bean id="compareInterceptor" class="myAop.CompareInterceptor"></bean>
	<bean id="studenttarget" class="myAop.StudentImpl"></bean>
	<bean id="student" class="org.springframework.aop.framework.ProxyFactoryBean">
		<property name="proxyInterfaces">
			<value>myAop.Student</value>
		</property>
		<property name="interceptorNames">
			<list>
				<value>beforeAdvice</value>
				<value>afterAdvice</value>
				<value>compareInterceptor</value>
			</list>
		</property>
		<property name="target">
			<ref bean="studenttarget" />
		</property>
	</bean>

</beans>

 

测试类Test.java

package myAop;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

/**
 */
public class Test {

    public static void main(String[] args) {
        ApplicationContext ctx = new FileSystemXmlApplicationContext("/src/applicationContext.xml");
        Student s = (Student) ctx.getBean("student");
        s.addStudent("ss"); 
    }
}
 


转载地址:http://www.blogjava.net/javadragon/archive/2006/12/03/85115.html

分享到:
评论

相关推荐

    简单spring aop 例子

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、...通过实践这些示例,可以更好地理解Spring AOP的精髓,从而在实际项目中灵活运用。

    spring-aop实例demo

    在这个实例中,我们看到了如何在Spring 3.2.8中使用AOP进行简单的日志记录。这只是AOP功能的冰山一角,实际上,你可以通过切面来处理更复杂的场景,如事务管理、性能监控、安全控制等。切记,合理地使用AOP可以极大...

    spring 3.0 aop 实例

    在Spring中,AOP主要用于处理系统级别的横切关注点,如日志、事务、安全性等。它通过定义切入点(Pointcut)和通知(Advice)来实现。切入点是程序执行流程中的某个特定位置,而通知是在切入点触发时执行的代码。 1...

    spring AOP入门教程

    - **SpringAOP.avi**:可能是一个视频教程,详细讲解了Spring AOP的概念和实践。 - **SpringAOP.doc**:可能是文档教程,包含了详细的步骤和示例代码。 - **SpringAOP_src.rar**:源代码示例,供你参考和实践。 - **...

    Spring实现AOP的4种方式

    在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点从业务逻辑中分离出来,比如日志记录、事务管理、权限检查等。本篇文章将详细探讨Spring实现AOP的四种主要方法:基于代理的方式、...

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

    ### Spring AOP面向方面编程原理:AOP概念详解 #### 一、引言 随着软件系统的日益复杂,传统的面向对象编程(OOP)...对于希望深入了解Spring AOP原理与实践的读者来说,掌握以上概念将是开启面向方面编程之旅的第一步。

    Spring AOP简单demo

    通过学习和实践Spring AOP,开发者可以更高效地组织代码,将关注点分离,提升代码的可读性和可维护性。在Spring AOPD1这个压缩包中,可能包含了创建和运行上述示例的步骤和代码,是学习AOP的好材料。

    Spring及AOP应用(事务与集成)培训

    在本次“Spring及AOP应用(事务与集成)培训”中,我们将深入探讨Spring的核心特性,特别是面向切面编程(AOP)以及事务管理和集成方面的知识。 首先,Spring的核心概念是依赖注入(Dependency Injection,DI)。通过...

    springAOP中文文档

    ### Spring AOP 概念与实践 #### 一、AOP 概述 **面向切面编程 (Aspect-Oriented Programming, AOP)** 是一种编程范式,它旨在提高程序的模块化程度,通过分离横切关注点来解决传统面向对象编程中难以处理的问题。...

    Spring IOC AOP MVC 简单例子

    在`SpringAOP`目录中,可能包含了定义切面、通知(advice)、切入点(pointcut)等内容。AOP的实现通常通过定义切面类,其中包含通知方法,并通过切入点表达式确定这些通知在何时何地执行。这使得代码更加模块化,...

    使用Spring配置文件实现AOP

    在Spring框架中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种强大的设计模式,它允许我们定义横切关注点,如日志、事务管理、权限检查等,然后将这些关注点与核心业务逻辑解耦。这篇教程将详细讲解...

    Spring基础:Spring AOP简单使用

    创建一个简单的Spring AOP应用,首先定义一个切面类,包含切点和通知,然后在Spring配置文件中启用AOP并注册切面,最后编写测试类验证AOP功能是否正常工作。 8. **最佳实践** - 适度使用AOP,过多的切面可能导致...

    以注解方式模拟Spring IoC AOP

    在Spring框架中,依赖注入(Inversion of Control, IoC)和面向切面编程(Aspect Oriented Programming, AOP)是两大核心特性。本篇将深入探讨如何通过注解方式来模拟Spring的这两种机制,帮助你理解其底层原理。 #...

    spring_aop

    项目“maven-spring-aop”可能包含了使用Maven构建的Spring AOP示例项目,其中包含了完整的XML配置、Java类和测试用例,便于开发者深入理解和实践Spring AOP的使用。通过这个项目,你可以亲自动手创建、运行并观察...

    spring aop的demo

    在`springAop1`这个压缩包中,可能包含了一个简单的应用示例,展示了如何定义一个切面类,以及如何在该类中定义通知方法。例如,我们可能会看到一个名为`LoggingAspect`的类,其中包含了`@Before`注解的方法,用于在...

    spring-aop.rar_java aop_spring aop

    【标题】"spring-aop.rar_java aop_spring aop" 涉及的主要知识点是Spring框架中的面向切面编程(AOP)以及Java基础知识。这个压缩包可能包含了一个简单的Spring AOP应用示例,同时也涵盖了Java的一些核心概念,如...

    spring-aop

    3. 切点表达式:切点表达式是Spring AOP的核心,它使用一种简单的语法来匹配方法。例如,我们可以使用通配符(*)、操作符&&、||、!以及方法参数等来精确控制通知的执行时机。 4. 异常处理:如果希望在发生特定异常时...

    SpringAOP.zip

    Spring AOP,全称为Aspect Oriented Programming,是Spring框架中的一个重要模块,主要负责处理系统中的...文件"5.SpringAOP_01"和"6.SpringAOP_02"很可能是课程的分阶段内容,涵盖了从基础概念到进阶实践的详细讲解。

    SpringAOP简单项目实现

    总结,这个"SpringAOP简单项目实现"涵盖了Spring AOP的基础知识,包括切面、通知、切入点的定义与配置,以及如何在实际项目中使用Maven进行构建和依赖管理。对于初学者来说,这是一个很好的实践案例,能够帮助他们...

Global site tag (gtag.js) - Google Analytics