`
duanfei
  • 浏览: 733945 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spring 2.0 的AOP

    博客分类:
  • J2EE
阅读更多
我使用的是Spring 2.0 的AOP, 它引入了一种更加简单并且更强大的方式来定义切面。

马上开始吧:

首先建一个普通Java项目:com.longthsoft.learn.spring

把 spring.jar, commons-logging.jar, cglib-nodep-...jar, aspectjweaver.jar, aspectjrt.jar  放到 Build Path 下.

以止 lib 除了 spring 外, 其他的都可以在 spring 下载包的 lib 中找到

下面编码开始:

让我们先写两个简单的类:
package com.longthsoft.learn.spring.models;

public class A {
	public void sayHello() {
		System.out.println("Hello, I'm a");
	}
}


package com.longthsoft.learn.spring.models;

public class B {
	public void sayHi() {
		System.out.println("Hi, I'm b");
	}
}


没什么实际的东西, 只是小A和小B在打招呼

接下来把他们交给Spring吧。
<?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"
	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">
	
	<bean id="a" class="com.longthsoft.learn.spring.models.A" />
	<bean id="b" class="com.longthsoft.learn.spring.models.B" />
</beans>

接下来写个Boot
package com.longthsoft.learn.spring;

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

import com.longthsoft.learn.spring.models.A;
import com.longthsoft.learn.spring.models.B;

public final class Boot {

	public static void main(String[] args) {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		A a = (A) ctx.getBean("a");
		a.sayHello();
		
		B b = (B) ctx.getBean("b");
		b.sayHi();
	}

}


嘿, 这里的运行结果不帖了, 大家脑子里闪过即可。

圣诞到了, 小A小B 介绍完自己之后,也应该说句 "Merry Christmas"

Spring 说, 既然你们交给我, 这等 routine 就不用再麻烦了, 直接一并处理掉。

于是:


package com.longthsoft.learn.spring;

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

@Aspect
public class SimpleAspect {

	@Pointcut("execution(* com.longthsoft.learn.spring.models.*.say*())")
	public void simplePointcut() { }
	
	@AfterReturning(pointcut="simplePointcut()")
	public void simpleAdvice() {
		System.out.println("Merry Christmas");
	}
}


然后修改一下配置文件

<?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"
	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">
	
	<aop:aspectj-autoproxy />
	
	<bean id="a" class="com.longthsoft.learn.spring.models.A" />
	<bean id="b" class="com.longthsoft.learn.spring.models.B" />
	
	<bean id="simpleAspect" class="com.longthsoft.learn.spring.SimpleAspect" />
</beans>

OK, 运行一下:

Hello, I'm a
Merry Christmas
Hi, I'm b
Merry Christmas
分享到:
评论

相关推荐

    Spring 2.0 AOP 完整例子

    网上找了很多例子多数都不能运行。包括after,before,round,throw切入,可对类直接拦截,不需要定义接口文件,自己研究了2天整理出来的。 Spring AOP 的完整例子,可直接运行。带jar包。

    spring-aop.jar各个版本

    spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-2.5.2.jar spring-aop-2.5.4.jar spring-aop-2.5.5.jar spring-aop-2.5.6.jar spring-aop-3.0.0.RELEASE.jar spring-aop-3.0.2.RELEASE.jar spring-aop-sources...

    spring2.0中文手册及使用指南 chm

    Spring 2.0 是一个非常重要的Java框架,它在企业级应用开发中占据了核心地位,尤其是在基于Java的轻量级应用程序上下文(IoC)和面向切面编程(AOP)方面。本手册和使用指南提供了全面的Spring 2.0相关知识,包括其...

    SPRING2.0中文文档

    Spring 2.0的AOP增强了切入点表达式,使得定位切点更加灵活,并引入了基于注解的切面定义,让切面编写更加直观。 四、数据访问集成 Spring 2.0在数据访问层提供了对各种持久化技术的集成,包括JDBC、ORM(Hibernate...

    Spring2.0宝典源代码

    《Spring2.0宝典源代码》是一份珍贵的学习资源,由知名作者李刚编写,旨在深入解析Spring框架的2.0版本。这份源代码集合是配合书籍《Spring2.0宝典》使用的,读者可以通过实际操作代码来理解和掌握Spring 2.0的核心...

    Spring2.0中文教程

    Spring 2.0是Spring框架的一个重要版本,它在Java企业级应用开发中扮演着核心角色。本教程将深入探讨...文档`spring2.0-reference_final_zh_cn.chm`将详细阐述这些概念和技术,帮助你成为一名熟练的Spring开发者。

    spring2.0 jar包

    Spring 2.0加强了AOP支持,允许开发者定义和执行横切关注点,如日志记录、事务管理等。@Aspect注解用于定义切面,@Before、@After、@Around等用于指定通知类型。此外,Spring还支持自定义注解作为切入点表达式,提高...

    spring2.0 中文教程

    2. **AOP(面向切面编程)**:Spring 2.0提供了更强大的面向切面编程支持,使得开发者可以将关注点分离,如日志、事务管理等,从而降低代码复杂性。AOP代理包括JDK动态代理和CGLIB代理,允许开发者定义切入点和通知...

    详尽的Spring2.0学习提纲

    Spring 2.0是Java开发中的一个里程碑,它在企业级应用开发中扮演着至关重要的角色,特别是对于依赖注入(IoC)和面向切面编程(AOP)的支持。本学习提纲旨在为初学者提供一份详尽的Spring 2.0学习指南,帮助他们系统...

    spring2.0中文参考手册.rar

    1. **AOP(面向切面编程)增强**:Spring 2.0 提供了更强大的面向切面编程支持,允许开发者定义更复杂的切面,包括基于注解的切点表达式和更多的通知类型。这使得代码更加整洁,业务逻辑与系统服务(如事务管理)...

    spring2.0技术手册_源代码(全十章)

    其次,Spring 2.0强化了依赖注入(DI)和面向切面编程(AOP)的支持。DI是Spring的核心特性,通过源码,我们可以学习到如何定义bean的配置,如何使用`@Autowired`和`@Qualifier`注解实现自动装配,以及如何自定义...

    Spring 2.0 源代码

    2. **AOP(面向切面编程)**:Spring 2.0提供了更强大的面向切面编程支持,允许开发者定义切面、通知(advisors)和切点(pointcuts),并将其应用于业务代码,实现如日志、事务管理等功能。切面可以是接口、类或...

    SPRING2.0开发详解

    ### SPRING2.0开发详解 #### 一、Spring框架简介 Spring框架是一个开源的Java平台,用于构建企业级应用程序和服务。它最初由Rod Johnson在2004年创建,并随着时间的发展不断壮大和完善。Spring 2.0版本是Spring...

    Spring2.0技术手册_林信良PDF

    《Spring2.0技术手册_林信良》是一本深入探讨Spring 2.0框架的权威指南,由知名IT专家林信良编写。这本书详细介绍了Spring框架的核心概念、设计原则以及实际应用,对于想要深入了解和掌握Spring 2.0的开发者来说,是...

    spring2.0学习源码

    在Spring 2.0中,最重要的更新之一是AOP(面向切面编程)的增强。这一版本引入了基于注解的AOP支持,使得开发者可以更直观地定义切面,无需编写XML配置。例如,@Before、@After、@Around等注解可以直接应用于方法上...

    精通spring2.0源代码

    《精通Spring 2.0源代码》是一本深入解析Spring框架核心原理的书籍,由罗时飞主编。这本书通过对Spring 2.0版本的源代码进行深入剖析,旨在帮助读者全面理解Spring的工作机制,提升在实际开发中的应用能力。源代码的...

    SPRING2.0---SPRING2.0 說明1

    在"配置SPRING2.0"的文件中,可能包含的是Spring 2.0的应用上下文配置文件,用于定义Bean、数据源、事务管理器等组件的配置。学习如何正确配置这些元素是理解和使用Spring 2.0的关键步骤。配置文件通常使用XML格式,...

    spring2.0完整开发包

    Spring 2.0在AOP方面进行了增强,支持更多的通知类型,包括环绕通知,使切面的实现更为灵活。 Spring MVC是用于构建Web应用程序的模块,它提供了模型-视图-控制器架构,将业务逻辑、数据处理和用户界面分离。在...

Global site tag (gtag.js) - Google Analytics