`
xieyan30
  • 浏览: 49087 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

spring AOP (4) 基础知识-代理

 
阅读更多

这篇文章主要讲解java的基础知识--代理。

代理其实是一种设计模式,下面的讲解是参照<<Java编程思想>>的内容。

我们先举个简单的示例来阐述什么是代理。

假如我们有一个接口Interface。

package spring3.aop.aop2;

public interface Interface {

	public void do1();

	public void do2(String str);

}

 我们在定义一个真实的类Target,来实现我们的接口Interface

package spring3.aop.aop2;

public class Target implements Interface {

	@Override
	public void do1() {
		System.out.println("Target.do1()");
	}

	@Override
	public void do2(String str) {
		System.out.println("Target.do2(" + str + ")");
	}

}

 我们在写一个代理类Proxy,它有一个属性,来存放目标对象。

package spring3.aop.aop2;

public class Proxy implements Interface {

	private Interface target;

	public Proxy(Interface target) {
		this.target = target;
	}

	@Override
	public void do1() {
		System.out.println(" before Target.do1()");
		target.do1();
		System.out.println(" after Target.do1()");
	}

	@Override
	public void do2(String str) {
		System.out.println("before Target.do2(" + str + ")");
		target.do2(str);
		System.out.println("before Target.do2(" + str + ")");
	}
}

 我们来运行下,看看代理效果

package spring3.aop.aop2;

public class ProxyMain {

	public static void main(String[] args) {
		Interface target = new Target();
		target.do1();
		target.do2("test");
		
		Interface proxy = new Proxy(target);
		proxy.do1();
		proxy.do2("test");
	}
}

 结果:

Target.do1()
Target.do2(test)
 before Target.do1()
Target.do1()
 after Target.do1()
 before Target.do2(test)
Target.do2(test)
 before Target.do2(test)

 以上就是最初的代理,静态代理。

就是使用一个和被代理对象有相同接口的代理类,用户实际使用这个代理类对象来完成相应操作,而不是直接使用目标类对象。但是静态代理又弊端,需要代理一个接口,就需要创建一个代理类,增加了代码量。

怎么办呢?

等待看后续的java动态代理。自己也可以先研究下。

未完待续。。。

1
1
分享到:
评论

相关推荐

    死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序.pdf

    了解这些基础知识可以帮助我们更好地掌握 Spring AOP 的实现细节。在分析源码时,可以参考作者的源码注释和相关文章,以便更深入地理解每一步操作。 总的来说,Spring AOP 通过动态代理技术实现了切面的插入,使得...

    spring aop的jar包

    下面将详细阐述Spring AOP涉及的知识点及其相关jar包的作用。 首先,我们来看压缩包中包含的关键jar文件: 1. **aspectjweaver.jar**:这是AspectJ的织入器,负责在运行时动态地将切面代码插入到目标类中。AspectJ...

    spring-aop-aspectj-case

    1. **Spring AOP基础**: - **代理模式**:Spring AOP基于动态代理实现,可以创建JDK动态代理或CGLIB代理,为目标对象提供增强功能。 - **通知(Advice)**:包括前置通知、后置通知、异常通知、环绕通知等,定义...

    springAOP配置动态代理实现

    一、Spring AOP基础知识 1. **什么是AOP**:AOP是一种编程范式,用于处理系统中的横切关注点,即那些跨越多个类或方法的共同功能,如事务管理、日志记录等。AOP通过切面(Aspect)将这些关注点与业务逻辑分离,提高...

    spring 4.* 缺少jar spring-cglib-repack-3.2.5.jar_spring-objenesis-repack-2.6.jar

    在Spring框架4.*版本中,可能会遇到一个常见问题,即缺少`spring-cglib-repack-3.2.5.jar`和`spring-objenesis-repack-2.6.jar`这两个jar...了解这些基础知识对于理解和优化Spring应用的性能、处理相关问题都非常重要。

    spring AOP 引入jar包,spring IOC 引入Jar包

    5. **代理(Proxy)**:Spring AOP 使用动态代理技术创建对象,有两种代理方式:JDK 动态代理和 CGLIB 代理。前者适用于接口实现类,后者适用于没有接口的类。 6. **注解使用**:如 @Aspect、@Before、@After、@...

    spring aop所需jar包

    4. **使用Spring AOP的jar包**: - `spring-aop.jar`:Spring AOP的核心库,包含了AOP的API和实现。 - `spring-beans.jar`:Spring Bean的定义和管理,AOP与之紧密关联。 - `spring-core.jar`:Spring的基础库,...

    spring AOP入门教程

    本教程将带你了解Spring AOP的基础知识,帮助你入门这一强大技术。 ### 一、什么是AOP AOP是一种编程范式,旨在解决程序中的横切关注点问题,这些关注点通常与业务逻辑无关,但又需要在多个地方被调用,如日志记录...

    jar包---Spring AOP 还需.rar

    4. **Spring AOP的应用场景**:事务管理是Spring AOP最常见的应用之一。通过在数据访问层的方法上声明@Transactional注解,可以实现声明式事务管理,无需编写事务管理代码。 5. **与MyBatis的集成**:MyBatis是一个...

    SpringAOP.zip

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

    spring-aop.pdf 源码电子书

    - `AspectException.java`定义了一个异常类,用于表示所有的AOP基础架构异常。从类的继承结构来看,`AspectException`是运行时异常(RuntimeException),代表这类异常是不检查的(unchecked)。它们通常被认为是...

    spring aop实例

    **一、Spring AOP基础知识** 1. **切面(Aspect)**:切面是跨越多个对象的行为或关注点的模块化。在Spring AOP中,切面由通知(advises)和切点(pointcuts)定义。 2. **通知(Advice)**:通知是在特定连接点上...

    spring_aop4.rar_aop4.com

    2. **Spring AOP基础** - Spring AOP是基于动态代理实现的,它可以为普通POJO(Plain Old Java Object)提供拦截器风格的事务管理、日志记录等功能。有两种代理模式:JDK动态代理和CGLIB代理。前者适用于接口,后者...

    Spring AOP源码笔记

    Spring AOP基础** - **切⾯编程**: AOP允许开发者将横切关注点(如日志、事务、安全性等)定义为独立的模块,称为切面。切面可以包含通知(advice)、切入点(pointcut)和其他元数据。 - **通知(Advice)**: 通知...

    Spring之使用AOP缘由(5-回顾)

    了解了这些基础知识,我们可以通过以下几个步骤在Spring中使用AOP: 1. 定义切面:创建一个类,并使用`@Aspect`注解标记为切面。 2. 定义切点:在切面类中,使用`@Pointcut`定义切点表达式。 3. 编写通知:使用`@...

    SpringAOP简单项目实现

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

    代理设计模式:静态代理和动态代理的理解、实现与区别(优缺点)与SpringAOP的3种配置方式案例工程代码

    本资源主要涵盖了静态代理和动态代理两种常见类型的代理模式,以及Spring AOP中动态代理的三种配置方式。以下是详细的知识点解析: ### 静态代理 静态代理是程序员手动创建代理类并实现相同接口的方式。代理类和...

    模拟spring aop【一】基于jdk动态代理实现的aop

    本篇文章将探讨如何通过JDK动态代理实现Spring AOP的基础知识。 首先,我们要理解什么是JDK动态代理。在Java中,动态代理机制允许我们在运行时创建一个实现了特定接口的新类。这个新类的实例可以代理目标对象,执行...

    第二章:Spring AOP 基础1

    这些知识点构建了Spring AOP的基础,通过这些,开发者可以灵活地实现横切关注点的解耦,提高代码的可维护性和复用性。在实际开发中,可以根据项目需求选择注解驱动或XML配置驱动的方式来实现AOP功能。

    初探spring aop内部实现 java

    Spring AOP的实现主要依赖于两种技术:动态代理和AspectJ。对于接口,Spring使用Java动态代理(JDK Proxy)创建代理对象;而对于类,Spring则使用CGLIB库生成子类代理。这两种方式都是在运行时生成代理对象,从而在...

Global site tag (gtag.js) - Google Analytics