代理模式

Spring知识点小结

≯℡__Kan透↙ 提交于 2020-01-07 13:52:00
1.Spring是什么? Spring是一个轻量级的IoC和AOP容器框架。目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置。 主要由以下几个模块组成: Spring Core:核心类库,提供IOC服务; Spring AOP:AOP服务; Spring Context:提供框架式的Bean访问方式; Spring DAO:对JDBC的抽象,简化了数据访问异常的处理; Spring ORM:对现有的ORM框架的支持; Spring Web:提供了基本的面向Web的综合特性,例如多方文件上传; Spring MVC:提供面向Web应用的Model-View-Controller实现。 2、Spring 的优点? spring属于低侵入式设计,代码的污染极低; spring的DI机制将对象之间的依赖关系交由框架处理,减低组件的耦合性; Spring提供了AOP技术,支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。 spring对于主流的应用框架提供了集成支持。 3.Spring的AOP理解: AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”

Spring AOP(面向方面编程)

泄露秘密 提交于 2020-01-07 10:25:42
AOP是一种编程范式,一般适用于具有 横切逻辑的场合 ,如 访问控制、事务管理、性能监测 等。旨在通过允许横切关注点的分离,提高模块化。比较流行的框架有Spring AOP 和 AspectJ。 面向方面编程(Aspect-Oriented Programming,AOP)也称为面向切面编程,是软件编程思想发展到一定阶段的产物,虽然是一种新的编程思想, 但却不是面向对象编程的替代品,它只是OOP的有益补充和延伸。 面向对象的编程将程序分解为不同层次的对象,通过封装、继承、多态等特性将对象组织成一个整体来完成功能,但在一定场合,也暴露出一些问题。在传统的业务处理代码中,通常会进行日志记录、参数合法性验证、异常处理、事务控制等操作,虽然使用OOP可以通过 组合或者继承的方式重用代码,但要实现某些功能(如日志记录),同样的代码仍然会分散到各个方法中 。这样。如果要关闭某个功能,或者对其进行修改,就必须要修改所有的相关方法。这不仅会增加开发者的工作量,相应的代码出错率也会提高。 在业务系统中,总有一些散落 、渗透到系统各处且不得不处理的事情,这些穿插在既定业务中的操作就是所谓的“横切逻辑”,也称为切面。怎么样才能不受这些附加要求的干扰,专注于真正的业务逻辑呢? 将这些重复性的代码抽取出来,放在专门的类和方法中处理,这样就便于管理和维护了。即便如此, 依然无法实现既定业务和横切逻辑的彻底解耦

代理模式

二次信任 提交于 2020-01-07 01:39:58
代理模式的分类: 静态代理 动态代理 ------------------------------------------------------------------------------------------------------------------- 静态代理 代码步骤: 接口(提取关键方法) 真实角色(原本的实现对象) 代理角色(扩展功能) 客户端访问代理角色(方法增强的结果) 1 //租房 2 public interface Rent { 3 void rent(); 4 } 1 //真实角色 房东 2 public class Host implements Rent { 3 public void rent() { 4 System.out.println("房东出租房子"); 5 } 6 } 1 //代理角色房屋中介 2 public class proxy implements Rent { 3 private Host host; 4 5 public proxy(){ 6 7 } 8 public proxy(Host host){ 9 this.host= host; 10 } 11 12 public void rent() { 13 host.rent(); 14 seeHouses(); 15 hetong(); 16 fare();

vuecli3[跨域代理配置]-Access to XMLHttpRequest at 'xxx' by CORS跨域问题前端解决方式

天大地大妈咪最大 提交于 2020-01-06 20:16:25
目标:将本地请求http://localhost:9091/api/app/userinfo转发到 http://10.101.80.131:3001/app/userinfo地址 在vuecli3的目录结构中,代理配置是在vue.config.js文件中进行配置 devServer: { host: "0.0.0.0", //指定使用一个 host。默认是 localhost,这里默认值即可 port: 9091, //指定端口 hot: true, // 开启热更新 https: false, // 是否开启https模式 proxy: { // 请求代理服务器 '/api': { //带上api前缀的 target: 'http://10.101.80.131:3001', //代理目标地址 changeOrigin: true, secure: false, pathRewrite: { // 在发出请求后将/api替换为''空值,这样不影响接口请求 '^/api': '' } } } }, axios实例 baseURL 属性设置 ‘/api’ 即可让所有的请求地址带上/api/…的路径,此时即可代理 或者这样: vue-cli3代理配置注意: **1、**不能设置本地路径读取操作如: 我的接口前缀都是从.env.development中读取的

代理模式

不问归期 提交于 2020-01-06 17:03:44
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 代理模式 链接 JDK动态代理实现原理 https://www.cnblogs.com/zuidongfeng/p/8735241.html 设计模式之代理模式:三种代理模式的实现方式 https://blog.csdn.net/that_is_cool/article/details/80988237 来源: oschina 链接: https://my.oschina.net/depeng414/blog/3152816

Nginx 反向代理详解

ぐ巨炮叔叔 提交于 2020-01-06 16:10:24
  Nginx 服务器的反向代理服务是其最常用的重要功能,由反向代理服务也可以衍生出很多与此相关的 Nginx 服务器重要功能。 1、代理   在Java设计模式中,代理模式是这样定义的:给某个对象提供一个代理对象,并由代理对象控制原对象的引用。   可能大家不太明白这句话,在举一个现实生活中的例子:比如我们要买一间二手房,虽然我们可以自己去找房源,但是这太花费时间精力了,而且房屋质量检测以及房屋过户等一系列手续也都得我们去办,再说现在这个社会,等我们找到房源,说不定房子都已经涨价了,那么怎么办呢?最简单快捷的方法就是找二手房中介公司(为什么?别人那里房源多啊),于是我们就委托中介公司来给我找合适的房子,以及后续的质量检测过户等操作,我们只需要选好自己想要的房子,然后交钱就行了。   代理简单来说,就是如果我们想做什么,但又不想直接去做,那么这时候就找另外一个人帮我们去做。那么这个例子里面的中介公司就是给我们做代理服务的,我们委托中介公司帮我们找房子。   Nginx 主要能够代理如下几种协议,其中用到的最多的就是做Http代理服务器。 2、正向代理   弄清楚什么是代理了,那么什么又是正向代理呢?   这里我再举一个例子:大家都知道,现在国内是访问不了 Google的,那么怎么才能访问 Google呢?我们又想,美国人不是能访问 Google吗(这不废话,Google就是美国的)

Charles抓包工具的使用

半腔热情 提交于 2020-01-06 14:46:21
1、工具导航栏 Charles 顶部为菜单导航栏,菜单导航栏下面为工具导航栏。视图如下图所示: 工具导航栏中提供了几种常用工具: :清除捕获到的所有请求。 :红点状态说明正在捕获请求, 灰色状态说明目前没有捕获请求。 :灰色状态说明是没有开启网速节流, 绿色状态说明开启了网速节流。 :灰色状态说明是没有开启断点, 红色状态说明开启了断点。 :编辑修改请求,点击之后可以修改请求的内容。 :重复发送请求,点击之后选中的请求会被再次发送。 :验证选中的请求的响应。 :常用功能,包含了 Tools 菜单中的常用功能。 :常用设置,包含了 Proxy 菜单中的常用设置。 2、主界面视图 Charles 主要提供两种查看封包的视图,分别名为 Structure 和 Sequence 。 Structure : 此视图将网络请求按访问的域名分类。 Sequence : 此视图将网络请求按访问的时间排序。 使用时可以根据具体的需要在这两种视图之前来回切换。请求多了有些时候会看不过来,Charles 提供了一个简单的 Filter 功能,可以输入关键字来快速筛选出 URL 中带指定关键字的网络请求。 对于某一个具体的网络请求,你可以查看其详细的请求内容和响应内容。如果请求内容是 POST 的表单,Charles 会自动帮你将表单进行分项显示。如果响应内容是 JSON 格式的,那么 Charles

Spring实现AOP的多种方式

本秂侑毒 提交于 2020-01-06 05:54:23
AOP(Aspect Oriented Programming)面向切面编程,通过预编译方式和运行期动态代理实现程序功能的横向多模块统一控制的一种技术。AOP是OOP的补充,是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。AOP可以分为静态织入与动态织入,静态织入即在编译前将需织入内容写入目标模块中,这样成本非常高。动态织入则不需要改变目标模块。Spring框架实现了AOP,使用注解配置完成AOP比使用XML配置要更加方便与直观。 上一篇随笔中已经详细讲了代理模式 。 一、基于XML配置的Spring AOP 在讲注解实现AOP功能前先用前面学习过的使用xml配置Spring AOP功能,这样是为了对比以便更好的理解。 1.1、新建一个Maven项目,添加引用,项目的pom.xml文件如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven

CDN之Web Cache

99封情书 提交于 2020-01-05 09:52:20
1. Cache 的工作方式 Web Cache 作为一种网页缓存技术,可以在用户访问网站服务器的任何一个中间网元上实现。根据 HTTP 协议的定义,在一次网页访问中,用户从客户端发出请求到网站服务器响应请求内容的交互过程中,通常会涉及 4 个关键的网元:用户、代理、网关和 Web 服务器。当 Web Cache 作为代理使用时,通常工作在正向代理或者透明代理的模式,Web Cache 可以在这两种模式下实现访问内容副本的缓存和服务;Web Cache 应用最多的地方还是在网关上,这也是 CDN 的典型应用场景,网关通常工作在反向代理模式。 1.1 正向代理 正向代理(Forward Proxy)方式下,使用者需要配置其网络访问的代理服务器地址为 Cache 设备的地址,内网用户对互联网的所有访问都通过代理服务器代理完成。使用者也可以仅对特殊应用设置代理服务器,此时仅该类访问需要通过代理服务器代理完成。通常正向代理的缓存设备支持冗余配置,从而保证代理系统的稳定性和可用性。共向代理的工作示意图如下: 如上示例,用户主机和代理服务器部署在同一网络环境中,用户主机地址为 192.168.10.101,正向代理服务器的地址为 192.168.10.1,用户想要访问的外网服务器地址为 172.16.10.200。通常用户需要为所使用的主机配置正向代理服务器地址(192.168.10.1

五、AOP

耗尽温柔 提交于 2020-01-05 06:07:04
1、AOP 什么?   AOP(Aspect Oriented Programming),通常称为面向切面编程。它利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。   什么是切面,什么是公共模块,那么我们概念少说,直接通过一个实例来看看 AOP 到底是什么。 回到顶部 2、需求   现在有一张表 User,然后我们要在程序中实现对 User 表的增加和删除操作。   要求:增加和删除操作都必须要开启事务,操作完成之后要提交事务。   User.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package com.ys.aop.one; public class User { private int uid; private String uname; public int getUid() { return uid; } public void setUid( int uid) { this .uid = uid; } public String getUname() {