`
xieyan30
  • 浏览: 46809 次
  • 性别: 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全栈技术点,开篇帮助同学们进行知识储备,夯实基础就是核心!课程从Spring AOP概念开始引入,通过Spring AOP代理和判断模式进行,宝库各种模式,不断的深入学习,相信会给同学们...

    Spring AOP核心编程思想教程

    非常详细的介绍Spring AOP全栈技术点,开篇帮助同学们进行知识储备,夯实基础就是核心!从Spring AOP概念开始引入,通过Spring AOP代理和判断模式进行,宝库各种模式,不断的深入学习,相信会给同学们带来不一样的...

    Spring-AOP .pptx

    基于Spring 4.x企业应用开发实战。AOP概述、基础知识、创建切面、创建增强类、自动创建代理,

    SpringAOP使用介绍,从前世到今生

    SpringAOP发展到现在出现的全部3种配置方式。由于Spring强大的向后兼容性,实际代码中往往会出现很多配置混杂的情况,而且居然还能工作,本文希望帮助大家理清楚这些知识。我们先来把它们的概念和关系说说清楚。AOP...

    跟我学spring3(1-7)

    【第四章】 资源 之 4.1 基础知识 ——跟我学spring3 【第四章】 资源 之 4.2 内置Resource实现 ——跟我学spring3 【第四章】 资源 之 4.3 访问Resource ——跟我学spring3 【第四章】 资源 之 4.4 Resource通配符...

    spring boot 实践学习案例,与其它组件整合

    - Spring Boot 基础知识,包括SpringBoot起步、配置详解、aop、filter、拦截器、监听、启动器、全局异常处理、外部Tomcat启动、HTTPS、监控 等。 - springboot-data - Spring Boot 数据库操作,包括SpringJDBC、...

    spring知识框架详解

    2004年3月24日,Spring框架以interface21框架为基础,经过重新设计,发布了1.0正式版。 很难想象Rod Johnson的学历 , 他是悉尼大学的博士,然而他的专业不是计算机,而是音乐学。 Spring理念 : 使现有技术更加实用 ....

    spring.net中文手册在线版

    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基础知识简介

    Video基础知识简介 内容概要:通过带着读者手写简化版 Spring 框架,了解 Spring 核心原理。在手写Spring 源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:IOC、AOP、Bean生命周期...

    Java 基础核心总结 java全方面基础知识 java开发人员必备

    Java 基础核心总结 java全方面基础知识 java开发人员必备 通过带着读者手写简化版 Spring 框架,了解 Spring 核心原理。在手写Spring 源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,...

    Spring.3.x企业应用开发实战(完整版).part2

    第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 ...

    跟开涛学Spring

    1.11 【第四章】 资源 之 4.1 基础知识 ——跟我学spring3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153 1.12 【第四章】 资源 之 4.2 内置Resource实现 ——跟我学spring3 . . . . . ...

    spring培训笔记

    代理模式,AOP框架,Spring中AOP的实现方式 一、Spring的事务管理 传统数据库事务的特性: Atomic: 原子性. 事务中的各个操作不可分割. 要么都成功,要么都失败. Consistency: 一致性. 数据库从一种状态转变为...

    Spring3.x企业应用开发实战(完整版) part1

    第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 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    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 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    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 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    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 ...

    Spring高级培训:Spring高级培训的样本项目

    它涵盖了基础知识(例如BFPP和BPP,JSR和SpEL),提示(例如@Conditional,通知,Spring配置文件和代理),测试等。 卫星数据库 通过Spring Boot和HSQL在内存DB中使用JDBC。 周六 通过Spring Boot和H2在内存DB...

    2023Java高频面试题

    Spring框架:Spring框架的基础概念、IOC容器、AOP等。 Hibernate框架:Hibernate框架的基础概念、ORM映射、HQL查询等。 Servlet与JSP:Web开发的基础知识、Servlet和JSP的基础概念、生命周期、内置对象等。 设计模式...

    java 自整理的基础面试知识

    基础、数据结构和算法、基本数据类型、集合框架、算法、并发包源码、jdk中的设计模式、排序 以及复杂度、Spring、SpringAPI、Spring2依赖注入、Spring注解、Spring数据访问、Spring 的MVC、Spring拦截器 过滤器、...

Global site tag (gtag.js) - Google Analytics