这篇文章主要讲解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动态代理。自己也可以先研究下。
未完待续。。。
相关推荐
课程内容非常详细的介绍Spring AOP全栈技术点,开篇帮助同学们进行知识储备,夯实基础就是核心!课程从Spring AOP概念开始引入,通过Spring AOP代理和判断模式进行,宝库各种模式,不断的深入学习,相信会给同学们...
非常详细的介绍Spring AOP全栈技术点,开篇帮助同学们进行知识储备,夯实基础就是核心!从Spring AOP概念开始引入,通过Spring AOP代理和判断模式进行,宝库各种模式,不断的深入学习,相信会给同学们带来不一样的...
基于Spring 4.x企业应用开发实战。AOP概述、基础知识、创建切面、创建增强类、自动创建代理,
SpringAOP发展到现在出现的全部3种配置方式。由于Spring强大的向后兼容性,实际代码中往往会出现很多配置混杂的情况,而且居然还能工作,本文希望帮助大家理清楚这些知识。我们先来把它们的概念和关系说说清楚。AOP...
【第四章】 资源 之 4.1 基础知识 ——跟我学spring3 【第四章】 资源 之 4.2 内置Resource实现 ——跟我学spring3 【第四章】 资源 之 4.3 访问Resource ——跟我学spring3 【第四章】 资源 之 4.4 Resource通配符...
- Spring Boot 基础知识,包括SpringBoot起步、配置详解、aop、filter、拦截器、监听、启动器、全局异常处理、外部Tomcat启动、HTTPS、监控 等。 - springboot-data - Spring Boot 数据库操作,包括SpringJDBC、...
2004年3月24日,Spring框架以interface21框架为基础,经过重新设计,发布了1.0正式版。 很难想象Rod Johnson的学历 , 他是悉尼大学的博士,然而他的专业不是计算机,而是音乐学。 Spring理念 : 使现有技术更加实用 ....
26.2.基础知识 26.2.1.应用通知 26.2.2.使用切入点-基本概念 26.3.深入探讨 26.3.1.其它类型的通知 26.3.1.1.前置通知 26.3.1.2.后置通知 26.3.1.3.异常通知 26.3.1.4.引入(mixins) 26.3.1.5.通知链 26.3.1.6.配置...
Video基础知识简介 内容概要:通过带着读者手写简化版 Spring 框架,了解 Spring 核心原理。在手写Spring 源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:IOC、AOP、Bean生命周期...
Java 基础核心总结 java全方面基础知识 java开发人员必备 通过带着读者手写简化版 Spring 框架,了解 Spring 核心原理。在手写Spring 源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,...
第6章 Spring AOP基础 6.1 AOP概述 6.1.1 AOP到底是什么 6.1.2 AOP术语 6.1.3 AOP的实现者 6.2 基础知识 6.2.1 带有横切逻辑的实例 6.2.2 JDK动态代理 6.2.3 CGLib动态代理 6.2.4 AOP联盟 6.2.5 代理知识小结 6.3 ...
1.11 【第四章】 资源 之 4.1 基础知识 ——跟我学spring3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153 1.12 【第四章】 资源 之 4.2 内置Resource实现 ——跟我学spring3 . . . . . ...
代理模式,AOP框架,Spring中AOP的实现方式 一、Spring的事务管理 传统数据库事务的特性: Atomic: 原子性. 事务中的各个操作不可分割. 要么都成功,要么都失败. Consistency: 一致性. 数据库从一种状态转变为...
第6章 Spring AOP基础 6.1 AOP概述 6.1.1 AOP到底是什么 6.1.2 AOP术语 6.1.3 AOP的实现者 6.2 基础知识 6.2.1 带有横切逻辑的实例 6.2.2 JDK动态代理 6.2.3 CGLib动态代理 6.2.4 AOP联盟 6.2.5 代理知识小结 6.3 ...
7.2.1 Thymeleaf 基础知识 171 7.2.2 与Spring MVC 集成 174 7.2.3 Spring Boot 的Thymeleaf 支持 175 7.2.4 实战 177 7.3 Web 相关配置 182 7.3.1 Spring Boot 提供的自动配置 182 7.3.2 接管Spring Boot 的Web ...
7.2.1 Thymeleaf 基础知识 171 7.2.2 与Spring MVC 集成 174 7.2.3 Spring Boot 的Thymeleaf 支持 175 7.2.4 实战 177 7.3 Web 相关配置 182 7.3.1 Spring Boot 提供的自动配置 182 7.3.2 接管Spring Boot 的Web ...
7.2.1 Thymeleaf 基础知识 171 7.2.2 与Spring MVC 集成 174 7.2.3 Spring Boot 的Thymeleaf 支持 175 7.2.4 实战 177 7.3 Web 相关配置 182 7.3.1 Spring Boot 提供的自动配置 182 7.3.2 接管Spring Boot 的Web ...
它涵盖了基础知识(例如BFPP和BPP,JSR和SpEL),提示(例如@Conditional,通知,Spring配置文件和代理),测试等。 卫星数据库 通过Spring Boot和HSQL在内存DB中使用JDBC。 周六 通过Spring Boot和H2在内存DB...
Spring框架:Spring框架的基础概念、IOC容器、AOP等。 Hibernate框架:Hibernate框架的基础概念、ORM映射、HQL查询等。 Servlet与JSP:Web开发的基础知识、Servlet和JSP的基础概念、生命周期、内置对象等。 设计模式...
基础、数据结构和算法、基本数据类型、集合框架、算法、并发包源码、jdk中的设计模式、排序 以及复杂度、Spring、SpringAPI、Spring2依赖注入、Spring注解、Spring数据访问、Spring 的MVC、Spring拦截器 过滤器、...