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

AOP4

阅读更多
spring对AOP的支持

1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP
2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP
3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换


如何强制使用CGLIB实现AOP?
* 添加CGLIB库,SPRING_HOME/cglib/*.jar
* 在spring配置文件中加入<aop:aspectj-autoproxy proxy-target-class="true"/>

JDK动态代理和CGLIB字节码生成的区别?
* JDK动态代理只能对实现了接口的类生成代理,而不能针对类
* CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法
  因为是继承,所以该类或方法最好不要声明成final



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: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.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
	<!-- 
	<aop:aspectj-autoproxy proxy-target-class="true"/>
	 -->
	<bean id="securityHandler" class="com.bjsxt.spring.SecurityHandler"/>           
	
	<bean id="userManager" class="com.bjsxt.spring.UserManagerImpl"/>
	
	<aop:config>
		<aop:aspect id="security" ref="securityHandler">
			<aop:pointcut id="allAddMethod" expression="execution(* 

com.bjsxt.spring.UserManagerImpl.add*(..))"/>
			<aop:before method="checkSecurity" pointcut-ref="allAddMethod"/>
		</aop:aspect>
	</aop:config>	
</beans>



SecurityHandler.java

package com.bjsxt.spring;

import org.aspectj.lang.JoinPoint;

public class SecurityHandler {
	
	private void checkSecurity(JoinPoint joinPoint) {
		Object[] args = joinPoint.getArgs();
		for (int i=0; i<args.length; i++) {
			System.out.println(args[i]);
		}
		
		System.out.println(joinPoint.getSignature().getName());
		System.out.println("----------checkSecurity()---------------");
	}
	
}


UserManagerImpl.java
package com.bjsxt.spring;

public class UserManagerImpl { // implements UserManager {

	public void addUser(String username, String password) {
		System.out.println("-------UserManagerImpl.addUser()----------");
	}

	public void deleteUser(int id) {
		System.out.println("-------UserManagerImpl.deleteUser()----------");
	}

	public String findUserById(int id) {
		System.out.println("-------UserManagerImpl.findUserById()----------");
		return null;
	}

	public void modifyUser(int id, String username, String password) {
		System.out.println("-------UserManagerImpl.modifyUser()----------");
	}
	
//	private void checkSecurity() {
//		System.out.println("----------checkSecurity()---------------");
//	}
}



Client.java
package com.bjsxt.spring;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Client {

	public static void main(String[] args) {
		BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		//UserManager userManager = (UserManager)factory.getBean("userManager");
		
		UserManagerImpl userManager = (UserManagerImpl)factory.getBean("userManager");
		userManager.addUser("张三", "123");
		//userManager.deleteUser(1);
	}
}
分享到:
评论

相关推荐

    spring_aop4.rar_aop4.com

    《Spring AOP4:深入理解面向切面编程》 在软件开发中,Spring框架以其强大的功能和灵活性,已经成为Java企业级应用的事实标准。而在Spring框架中,AOP(Aspect Oriented Programming,面向切面编程)是其核心特性...

    springAOP 4个jar包

    4. **aopalliance-1.0.jar**:AOP Alliance是一个接口集,为不同的AOP框架提供了一个统一的API。Spring AOP和AspectJ等框架都遵循这些接口,使得它们可以互操作。比如,`org.aopalliance.intercept....

    spring_aop4.rar_Home Home_jar 转换_spring AOP jar

    spring对AOP的支持 1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP 2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP 3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK...

    spring aop spring aop

    4. **织入(Weaving)**:织入是将切面应用到目标对象来创建新的代理对象的过程。Spring支持三种织入方式:编译时织入、类加载时织入和运行时织入。在上述例子中,运行时织入通过Spring的ApplicationContext来实现。...

    aopalliance-1.0.jar及aopalliance源码

    4. **安全性检查**: 在方法调用前进行权限验证,确保只有授权的用户或服务才能执行特定操作。 **总结** AOP Alliance作为面向切面编程的桥梁,简化了多个AOP框架之间的交互,提高了代码的可复用性和模块化。通过...

    spring-aop.jar各个版本

    spring-aop-1.1.1.jar spring-aop-1.2.6.jar spring-aop-1.2.9.jar spring-aop-2.0.2.jar spring-aop-2.0.6.jar spring-aop-2.0.7.jar spring-aop-2.0.8.jar spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-...

    aop所依赖的所有包

    AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,旨在减少代码的重复性和增强可维护性,特别是在处理系统中的横切关注点时。这些关注点,如日志、事务管理、安全检查等,往往分散在系统的各个部分...

    AOP@Work AOP 工具比较

    面向切面编程(AOP,Aspect Oriented Programming)是一种编程范式,旨在通过将关注点分离,提高软件的模块化程度。AOP的核心是切面,它封装了横切关注点,如日志、事务管理、性能监控等,使得这些功能可以独立于主...

    spring-boot aop

    4. **使用代理**:Spring会根据需要自动创建代理对象来处理通知。默认情况下,Spring使用基于Java的代理,但对于需要在静态方法或非Spring管理对象上应用AOP的情况,可能需要使用CGLIB或AspectJ字节码代理。 5. **...

    aop开发环境jar包

    4. **Spring Boot**:基于Spring框架的快速开发工具,内建对AOP的支持,并且简化了项目配置。 5. **Logback/Log4j**:日志框架,常与AOP结合使用,记录切面的执行信息。 6. **TestNG/JUnit**:测试框架,用于验证...

    aopalliance最新完整jar包

    在Java应用中,aopalliance.jar包扮演着至关重要的角色,它包含了一些核心接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.aop.Advice`,这些接口定义了拦截器和通知的概念,它们是AOP的...

    spring aop jar 包

    4. **连接点(Join Point)**:连接点是切点在实际运行时的实例,比如一个具体的方法调用。 5. **织入(Weaving)**:织入是将切面应用到目标对象并创建一个代理的过程。Spring AOP支持三种织入方式:编译时织入、...

    反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    面向切面编程(AOP)是一种编程范式,旨在将横切关注点(如日志、安全等)与业务逻辑分离,从而提高模块化。AOP通过预定义的“切面”对横切关注点进行模块化,从而可以在不修改业务逻辑代码的情况下增加新功能。动态...

    开发工具 aopalliance-1.0

    开发工具 aopalliance-1.0开发工具 aopalliance-1.0开发工具 aopalliance-1.0开发工具 aopalliance-1.0开发工具 aopalliance-1.0开发工具 aopalliance-1.0开发工具 aopalliance-1.0开发工具 aopalliance-1.0开发工具...

    Spring实现AOP的4种方式

    4. 基于Java的AOP配置 Spring 4.0引入了基于Java的AOP配置,可以通过@EnableAspectJAutoProxy注解启用AOP,并在配置类中定义切面。这种方式与基于XML的配置相比,更加简洁且易于测试,因为所有的配置都集中在一个...

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

    4. **丰富的切入点表达式语言**:Spring AOP支持使用SpEL(Spring Expression Language)来定义复杂的切入点表达式,这让开发者能够更加灵活地控制通知的触发条件。 #### 四、Spring AOP的实现示例 接下来,我们...

    简单spring aop 例子

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

    spring-aop-jar

    4. 安全控制:在方法调用前检查权限。 总结起来,"spring-aop-jar"涉及了Spring框架中的面向切面编程模块,包括Spring AOP和AspectJ的集成。通过理解和熟练使用这些组件,开发者可以有效地解耦关注点,提高代码的可...

    aopalliance

    它定义了一些基础的AOP接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.aop.Advice`,这些接口被广泛应用于诸如AspectJ、Spring AOP等AOP框架中。 二、AOPAlliance在Spring 2.0中的作用 ...

    Spring Aop四个依赖的Jar包

    4. **aopalliance-1.0.jar**:AOP Alliance是一个包含AOP领域通用接口的库,旨在促进不同AOP实现之间的互操作性。Spring AOP就是基于这些接口进行设计的,因此这个库是Spring AOP和其他AOP实现之间协作的基础。 在...

Global site tag (gtag.js) - Google Analytics