`
king_tt
  • 浏览: 2233517 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

aspectj动态代理

阅读更多

笔记之用....

 

UserService

 

package com.spring.test;

import org.springframework.stereotype.Component;

@Component
public interface UserService {
	
	public void createUser();
	
	public void deleteUser();
	
	public void updateUser(int id);

}


实现类UserDao

 

package com.spring.test;

import org.springframework.stereotype.Component;

@Component
public class UserDao implements UserService {

	public void createUser() {
		System.out.println("user saved...");

	}
	
	public void deleteUser(){
		System.out.println("delete user...");
	}
	
	public void updateUser(int id){
		System.out.println("update user...");
	}

}



配置文件

 

<?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:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd ">

		<context:annotation-config></context:annotation-config>
		<context:component-scan base-package="com.spring.test,com.spring.log"></context:component-scan>
		<aop:aspectj-autoproxy></aop:aspectj-autoproxy>

</beans>


要切入的

 

package com.spring.log;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class LogInterceptor {
	
	@Before(value="execution (* com.spring.test.*.*(..))")
	public void beforeMethod(JoinPoint point){
		System.out.println("方法执行前执行");
		 System.out.println(point.getTarget()+"类的"+point.getSignature().getName()+"方法执行!!!");  
	}
	@After(value="execution (* com.spring.test.*.*(..))")
	public void afterMethod(JoinPoint point){
		System.out.println("方法执行后执行");
		 System.out.println(point.getTarget()+"类的"+point.getSignature().getName()+"方法执行完毕!!!");  
	}

}


Junit测试

 

package com.junit.test;

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

import com.spring.test.UserService;


public class Test {
	
	@org.junit.Test
	public void Test(){
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		UserService service = (UserService) ctx.getBean("userDao");
		service.createUser();
	}
	

}


测试结果:

方法执行前执行
com.spring.test.UserDao@1977b9b类的createUser方法执行!!!
user saved...
方法执行后执行
com.spring.test.UserDao@1977b9b类的createUser方法执行完毕!!!

分享到:
评论

相关推荐

    Spring aop 之 静态代理 动态代理 Aspectj aop-config 等实现方式

    主要对Spring AOP的相关概念和简单的静态代理、动态代理以及常见的几种AOP配置方式做总结学习。主要包括:1. AOP的常见概念 2. 静态代理 3. jdk动态代理 4. Aspectj and Aspectjweaver 5. **aop-config** 6. CGLIB ...

    Java JDK代理、CGLIB、AspectJ代理分析比较

    接下来将详细介绍三种常用的Java代理技术:JDK代理、CGLIB代理以及AspectJ代理,并对比它们各自的优缺点。 #### 二、静态代理实例 静态代理可以通过下面的例子进行说明: ```java public interface Calculator { ...

    spring之AOP(动态代理)

    在Spring中,AOP主要通过两种动态代理技术实现:JDK动态代理和CGLIB动态代理。 首先,让我们详细了解一下JDK动态代理。JDK动态代理基于Java的接口实现,它适用于目标对象实现了至少一个接口的情况。在运行时,JDK...

    aspectj,aspectjrt,weaver等

    5. 配置织入:在Spring中,可以通过XML配置或注解方式来启用AspectJ自动代理,并声明切面。 了解并熟练掌握AspectJ、AspectJRT 和 AspectWeaver 的基本概念和用法,对于深入学习Spring AOP和提升应用程序的可维护性...

    AspectJ的JAR包

    AspectJ Weaver在Spring AOP中起到关键作用,它可以动态地在类加载时织入切面,即使目标类没有被AspectJ编译器处理过。这使得AspectJ与Spring的集成更加灵活,可以在不修改原有代码的情况下引入切面。 2. `...

    aspectj-1.9.6.jar

    2. **动态织入**:在类加载时或运行时,通过代理模式实现切面的织入。这使得可以在不重新编译源代码的情况下引入新的切面。 3. **AspectJ语言**:AspectJ提供了一套强大的声明式语法,用于定义切点、通知以及它们...

    Android+反射+代理+静态代理+AspectJ

    【Android + 反射 + 代理 + 静态代理 + AspectJ】 面向切面编程(AOP)是一种编程范式,与面向对象编程(OOP)相对,它旨在将关注点分离,使得通用功能(如日志记录、事务管理等)可以从核心业务逻辑中解耦。AOP 的...

    Aspectj

    运行时织入则依赖于代理模式。 6. **引入(Introduction)**: 引入允许在现有类中添加新的方法或字段,无需修改原有代码。这对于添加如日志记录、锁等通用功能非常有用。 7. **注解驱动的编程**: AspectJ支持使用...

    aspectj jar

    两种方式都需要在Spring配置中指定启用AspectJ自动代理。 3. 定义切面:在Java类中定义切面,通常使用`@Aspect`注解标记。切面包含通知(advice),如前置通知(before)、后置通知(after)、环绕通知(around)等...

    aspectJ

    AspectJ可以在编译时(编译器织入)、类加载时(类装载器织入)或运行时(代理织入)进行织入,根据项目需求选择合适的时机。 4. **注解(Annotation)支持**:AspectJ提供了注解驱动的编程模型,使得切面的定义...

    Aop之AspectJ详解解读demo

    3. **配置AspectJ**:在Spring框架中,需要配置AspectJ的自动代理,使切面生效。 ```xml &lt;aop:aspectj-autoproxy /&gt; ``` **四、AspectJ的应用场景** 1. **日志记录**:在方法调用前后记录日志,便于追踪程序...

    精通AspectJ_源代码

    4. **织入(Weaving)**:织入是将切面应用到目标对象的过程,可以发生在编译时(编译器织入)、类加载时(类装载器织入)或运行时(代理织入)。AspectJ提供了一款编译器和一个类装载器,以支持这三种类型的织入。 ...

    aspectj-1.7.3.jar

    spring默认使用的就是AspectJ来实现的动态代理。使用spring的aop的时候,需要引入aspectj.jar

    android中aspectj 的使用

    根据提供的信息,我们可以深入探讨如何在Android环境中使用AspectJ实现动态代理,并且解析代码片段来进一步解释具体的实现细节。 ### Android中的AspectJ简介 AspectJ是一种面向切面编程(AOP)的语言,它允许...

    spring和aspectj的aop实验

    - **配置织入**:在Spring配置中启用AspectJ自动代理,并将切面类加入到上下文中。 - **运行实验**:编写测试用例,观察切面是否正确地在目标方法执行前后或异常时介入。 5. **aoptest**文件可能包含了实验所需的...

    book :aspectj in action

    此外,书中可能还提到了AspectJ的开发和调试工具,如AspectJ Weaver和LTW(Load-Time Weaving),它们可以帮助开发者在运行时动态地编织切面。 压缩包内的"Manning@2003 - AspectJ In Action.pdf"是该书的电子版,...

    基于Java动态代理的AOP实现.zip

    本项目旨在通过Java的动态代理技术实现面向切面编程(AOP),涵盖了静态代理、JDK动态代理、CGLIB动态代理、AspectJ以及基于instrumentation的动态代理等多种实现方式。通过这些实现方式,可以在不修改原有代码的...

    spring aspectj.jar

    另一种是通过Spring的注解驱动的AOP,它利用AspectJ的编译器或 weaving工具来生成代理类,但可以在不引入额外的依赖下运行。`aspectweave`标签通常与AspectJ的织入过程相关,它可以控制何时以及如何进行织入。 在...

    AspectJ_Cookbook_English_edition

    5. **类型织入与编译时织入**:对比分析编译时织入(使用ajc编译器)和类型织入(使用Java代理)的优缺点,以及如何选择合适的方法。 6. **注解驱动的AOP**:介绍如何使用AspectJ的注解来简化切面的定义,使代码...

    JavaEE AspectJ基于注解的配置

    `&lt;aop:aspectj-autoproxy&gt;`标签启用了AspectJ的自动代理功能,使得Spring能够识别并处理切面。`&lt;bean&gt;`标签定义了切面类的bean,使其能够被Spring容器管理。 此外,AspectJ还提供了其他的注解,如`@After`、`@...

Global site tag (gtag.js) - Google Analytics