`

Spring AspectJ简单测试代码

 
阅读更多

http://blog.csdn.net/xiaose7613/article/details/4301989

1.定义一个被通知的对象(目标对象)POJO

TestBean.java

 

package com.spring.aspect;
public class TestBean {
	public void add(){
		System.out.println("add to db");
	}
}

 2.定义一个通知对象(advisor)

 

TestAdvice.java

 

package com.spring.aspect;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
/**
 * @Description:     定义一个通知对象(advisor)
 * @Author :      yc.min              
 */
@Aspect
public class TestAdvice {
	@Pointcut("execution(* TestBean.add(..))")
	public void perform(){
	}
     /** 
     * 增加事务到指定的类 
     */  
    @Around("perform()")  
    public void addTransaction(ProceedingJoinPoint pjp) {  
        System.out.println("set autocommit false");  
        try {  
            pjp.proceed();  
            System.out.println("commit transaction");  
        } catch (Throwable throwable) {  
            System.out.println("rollback transaction");  
        }  
    }
}

 3.配置XML代码

 

aop.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:aop="http://www.springframework.org/schema/aop"  
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">  
    <aop:aspectj-autoproxy/>  
    <bean id="testBean" class="com.spring.aspect.TestBean"/>  
    <bean id="testAdvice" class="com.spring.aspect.TestAdvice"/>  
</beans> 

 4.写测试代码测试

 

Test.java

 

package com.spring.aspect;
import java.io.IOException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
	public static void main(String[] args) throws IOException {  
        ApplicationContext ctx = new ClassPathXmlApplicationContext(  
                "com/spring/aspect/aop.xml");
        TestBean t = (TestBean) ctx.getBean("testBean");  
        t.add();  
    } 
}

 5.测试结果

[c-sharp] view plaincopy
 
  1. set autocommit false  
  2. add to db  
  3. commit transaction  

6,依赖jar包

aspectjweaver-1.6.12.jar

http://minyongcheng.iteye.com/admin/blogs/2104253

分享到:
评论

相关推荐

    spring基于AspectJ实现事务控制

    4. **织入切面**:Spring会自动检测到`@Transactional`注解,并在需要的地方自动创建事务。如果你使用的是编译时织入,你需要使用AspectJ的maven或gradle插件来编译代码;如果是运行时织入,则不需要额外配置,只需...

    spring和aspectj的aop实验

    其中,类文件可能包含了切面和被通知的对象,配置文件可能包含了Spring和AspectJ的配置,测试用例则用来验证AOP功能是否正常工作。 通过这个实验,你可以深入理解Spring和AspectJ如何协同工作,提升代码的可维护性...

    Spring @AspectJ 实现AOP 入门例子

    总的来说,Spring @AspectJ为开发者提供了一种简单、直观的方式来实现面向切面编程。通过定义切面和通知,我们可以将关注点分离,提高代码的可维护性和复用性。在实际项目中,这种技术常用于日志、事务管理、性能...

    AspectJ in Action: Enterprise AOP with Spring Applications

    - **提高测试性:**将横切关注点从核心业务逻辑中分离出来后,可以使单元测试更加简单易行。 #### 面向切面编程(AOP)原理与实践 - **AOP基本概念:** - **切面(Aspect):**一个关注点的模块化表示。 - **连接点...

    JavaSpring的依赖包(包含切面AspectJ)

    在Spring中结合使用AspectJ,可以实现更灵活的代码结构。例如,我们可以将日志、缓存、事务管理等横切关注点(cross-cutting concerns)抽取为切面,然后在需要的地方应用。这样不仅提高了代码的可复用性,还减少了...

    简单spring aop 例子

    4. **测试**:在测试类中,创建Spring容器并调用`UserService`的方法,你会看到日志信息先于方法执行输出。 以上就是Spring AOP的基本用法。在实际项目中,你可以根据需求定义不同的通知类型,如`@After`、`@Around...

    aspectj-1.6.10.jar,aspectjweaver-1.6.9.jar,spring事务所用到的jar

    Spring会自动检测这些注解,并使用像AspectJ这样的AOP工具来确保事务的正确性。在分布式系统中,事务管理尤其重要,因为它确保了数据的一致性和完整性。 总的来说,"aspectj-1.6.10.jar" 和 "aspectjweaver-1.6.9....

    spring In action源代码

    源代码中,你可能会发现@Test注解的JUnit测试用例,以及Spring TestContext Framework的使用,这些帮助确保代码质量。 7. **Spring Security**:如果源代码涉及安全,那么Spring Security的配置和使用也是重点,它...

    Spring AOP之基于AspectJ注解总结与案例

    总的来说,Spring AOP结合AspectJ注解使得我们能以声明式的方式处理横切关注点,提高代码的可读性和可维护性。通过实践和调试,你将更好地理解这些概念如何协同工作,从而在实际项目中灵活运用。

    spring扩展点测试示例代码

    这个压缩包提供的"spring扩展点测试示例代码"是一个实例,帮助我们理解如何在实践中利用Spring的扩展点进行自定义功能的实现。 首先,Spring的核心设计理念之一就是“依赖注入”(Dependency Injection,DI),它...

    spring AOP myeclipse 完整代码

    在压缩包`SpringAOPDemo1`中,很可能包含了整个Spring AOP的示例代码,包括`UserService`、`LogService`类的实现,以及相应的`applicationContext.xml`配置文件。通过查看和运行这些代码,你可以更深入地理解Spring ...

    Spring aop代码

    Spring AOP(面向切面编程)是Spring框架中的一个重要组成部分,它允许程序员在不修改源代码的情况下,通过插入切面来增强程序的功能。这个压缩包文件"Spring AOP代码"很可能包含了一些示例代码,用于演示如何在...

    aspectj,aspectjrt,weaver等

    AspectJ、AspectJRT 和 AspectWeaver 是三个与面向切面编程(AOP)相关的关键组件,它们在Spring框架中有着重要应用,...同时,使用AspectJ的动态织入功能可以更好地实现代码的解耦,提高代码的可复用性和可测试性。

    传智播客 spring2.5源代码_lib包

    10. **Spring AOP增强**: Spring 2.5的AOP增强了对AspectJ的支持,可以使用AspectJ的语法定义切点和通知,提供了更强大的切面编程能力。 这个"传智播客 spring2.5源代码_lib包"包含了Spring 2.5框架中的所有库文件...

    spring攻略(第二版)源代码

    8. **测试支持**:Spring提供了强大的测试支持,如`SpringJUnit4ClassRunner`,使单元测试和集成测试变得简单。 通过阅读和分析《Spring攻略(第二版)源代码》中的内容,开发者不仅可以深化对Spring框架的理解,还能...

    Aop之AspectJ详解解读demo

    在"AopDemo-master"压缩包中,通常包含了一个简单的AspectJ示例项目,可能包括以下部分: 1. **源代码**:包含切面类(如LoggingAspect)和业务逻辑类(如Service类)。 2. **配置文件**:如Spring的XML配置文件,...

    Manning - AspectJ in Action切面编程详解-书签文字英文版

    此外,书中还介绍了如何集成AspectJ到Spring框架,以及如何在测试环境中使用AspectJ。 切面编程(AOP)的核心理念在于,通过将系统中分散的、横切多个模块的公共行为(如事务管理)抽取出来,形成独立的切面,然后...

    spring 4.3 源代码

    通过@Autowired注解,系统可以自动装配Bean,简化了配置,增强了代码的可测试性。同时,@Qualifier注解用于在多个相同类型的Bean中指定具体依赖。 3. **Bean生命周期管理** 在4.3版本中,Spring提供了多种方式来...

    spring2.0升级到spring3.0.5的开发包

    9. **测试框架增强**:Spring 3.0的测试支持更加完善,包括对Mockito等第三方库的集成,使得单元测试和集成测试变得更加容易。 10. **更多模块**:Spring 3.0.5包含了多个模块的更新,例如`org.springframework....

Global site tag (gtag.js) - Google Analytics