AutoProxy

ZSH 自动读取 macOS 系统代理配置并设置环境变量

假如想象 提交于 2021-02-12 08:43:53
更多奇技淫巧欢迎订阅博客:https://fuckcloudnative.io 前言 和其它 Linux 的 DE 一样,macOS 也支持在“系统偏好设置”中设置 HTTP 代理、HTTPS 代理,但是 macOS 并不会在终端(Terminal、iTerm)的 shell 中自动生效系统代理配置。为了方便日常使用,我决定好好研究一下 macOS 的系统代理。 1. macOS 系统代理的行为 和 Linux 和 Windows 只有一种系统代理配置不同,macOS 为每一种网络设备(Wi-Fi、Ethernet、Bluetooth PAN 等)维护了独立的网络配置,包括代理配置在内。因此当切换网络设备时,macOS 会使用不同的代理配置;如果同时连接了多个网络设备,则操作系统会优先采用在 和大部分 Linux 桌面环境一样,系统偏好设置中的代理设置在 shell session 中是不会生效的,在终端中使用代理、需要手动提供 HTTP_PROXY 、 HTTPS_PROXY 和 ALL_PROXY 环境变量。 2. 在终端获取 macOS 系统代理配置 macOS 内置了许多实用的命令行工具,如 xcode-select 用于安装命令行工具和配置 Xcode、 build_webkit 用于编译 WebKit、 softwareupdate 用于获取系统更新等

Spring注解驱动开发之AOP

穿精又带淫゛_ 提交于 2020-12-29 20:03:44
  前言:现今SpringBoot、SpringCloud技术非常火热,作为Spring之上的框架,他们大量使用到了Spring的一些底层注解、原理,比如@Conditional、@Import、@EnableXXX等。如果掌握这些底层原理、注解,那么我们对这些高层框架就能做到高度定制,使用的游刃有余   本篇主要内容:Spring AOP的使用及其原理分析 一、AOP功能测试 AOP【动态代理】:指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式 步骤:    1、导入aop模块;Spring AOP:(spring-aspects)   2、定义一个业务逻辑类(MathCalculator);在业务逻辑运行的时候将日志进行打印(方法之前、方法运行结束、方法出现异常,xxx)    public class MathCalculator { public int div(int i,int j){ System.out.println("MathCalculator...div..."); return i/j; } }   3、定义一个日志切面类(LogAspects):切面类里面的方法需要动态感知MathCalculator.div运行到哪里然后执行; / 切面类 @author lfy @Aspect: 告诉Spring当前类是一个切面类 /

【转】SpringBoot 注解事务声明式事务

﹥>﹥吖頭↗ 提交于 2020-12-05 06:58:19
文章来源: http://www.cnblogs.com/guozp/articles/7446477.html   springboot 对新人来说可能上手比springmvc要快,但是对于各位从springmvc转战到springboot的话,有些地方还需要适应下,尤其是xml配置。我个人是比较喜欢注解➕xml是因为看着方便,查找方便,清晰明了。但是xml完全可以使用注解代替,今天就扒一扒springboot中事务使用注解的玩法。   springboot的事务也主要分为两大类,一是xml声明式事务,二是注解事务,注解事务也可以实现类似声明式事务的方法,关于注解声明式事务,目前网上搜索不到合适的资料,所以在这里,我将自己查找和总结的几个方法写到这里,大家共同探讨 文章来源: http://www.cnblogs.com/guozp/articles/7446477.html springboot 之 xml事务 可以使用 @ImportResource("classpath:transaction.xml") 引入该xml的配置,xml的配置如下    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http:

spring 如何决定使用jdk动态代理和cglib(转)

孤人 提交于 2020-11-23 07:40:32
Spring1.2: 将事务代理工厂[ TransactionProxyFactoryBean] 或 自动代理拦截器[ BeanNameAutoProxyCreator] 的 proxyTargetClass 属性,设置为 true,则使用 CGLIB代理,此属性默认为 false,使用 JDK动态代理. 以下引用 Spring Framework reference 2.0.5: Spring2.0: Spring AOP部分使用JDK动态代理或者CGLIB来为目标对象创建代理。(建议尽量使用JDK的动态代理) 如果被代理的目标对象实现了至少一个接口,则会使用JDK动态代理。所有该目标类型实现的接口都将被代理。若该目标对象没有实现任何接口,则创建一个CGLIB代理。 如果你希望强制使用CGLIB代理,(例如:希望代理目标对象的所有方法,而不只是实现自接口的方法)那也可以。但是需要考虑以下问题: 无法通知(advise)Final 方法,因为他们不能被覆写。 你需要将CGLIB 2二进制发行包放在classpath下面,与之相较JDK本身就提供了动态代理 强制使用CGLIB代理需要将 |aop:config| 的 proxy-target-class 属性设为true: |aop:config proxy-target-class="true"| ... |/aop:config|

【Spring】Spring AOP 代理对象生成逻辑源码分析

非 Y 不嫁゛ 提交于 2020-08-20 08:16:23
1. spring aop案例(POJO注入) 1.0 被代理接口 TargetInterface /** * 被代理的接口 * @author Yang ZhiWei */ public interface TargetInterface { void show(); String showName(); } 1.1 被代理对象 @Slf4j public class TargetObject implements TargetInterface { @Override public void show() { log.info("show----->I am a TargetObject!"); } @Override public String showName() { return "showName--->TargetObject !"; } } 1.2 通知 MyAdvice @Slf4j public class MyAdvice { public void takeSeat() { log.info("====> MethodBeforeAdvice:Take Seat!"); } public void turnOffPhone() { log.info("==> MethodBeforeAdvice:turn Off Phone!"); } public

Spring 如何在一个事务中开启另一个事务?

好久不见. 提交于 2020-08-16 04:30:20
这样的情景可能不常见,但是还是会有的,一旦遇到,如果业务比较复杂,就会很麻烦,但是还是有解决的方案的,比如将一个service方法拆成两个方法,也就是将两个操作的事务分开。 但是这只适用与业务比较简单的,如果出现多次数据库的写操作,而我们调用的系统只需要其中一个写操作的最新数据,如果我们将它分开,那么如果调用目标系统出现异常的时候,那么之前的写操作就不能回滚了。 举个简单的例子: 南昌代孕【网址:bztss.com】 @Service public class ServiceA { @Transactional public void doSomething(){ 向数据库中添加数据; 调用其他系统; } } 这里就用伪代码来做示例了,当我们执行了“向数据库中添加数据”,我们去数据库中查询,发现并没有我们添加的数据,但是当我们的service这个方法执行完成之后,数据库中就有这条数据了,这是由于数据库的隔离性造成的。 Spring中的事务注解 @transactional 提供了一个参数: 代孕公司【网址:bztss.com】 Propagation propagation() default Propagation.REQUIRED; 这个参数是定义 Spring事务的传递性的,默认值为:required,也就是如果有事务,就加入事务,如果没有,就创建事务。 这个参数的值有很多

Spring AOP学习笔记05:AOP失效的罪因

廉价感情. 提交于 2020-08-14 03:13:17
  前面的文章中我们介绍了Spring AOP的简单使用,并从源码的角度学习了其底层的实现原理,有了这些基础之后,本文来讨论一下Spring AOP失效的问题,这个问题可能我们在平时工作中或多或少也会碰到。这个话题应该从同一个对象内的嵌套方法调用拦截失效说起。 1. 问题的现象   假设我们有如下对象类定义(同一对象内方法嵌套调用的目标对象示例): public class NestableInvocationDemo { public void method1(){ method2(); System. out .println( " method1 executed! " ); } public void method2(){ System. out .println( " method2 executed! " ); } }   这个类定义中需要我们关注的是它的某个方法会调用同一对象上定义的其他方法。这通常是比较常见的,在NestableInvocationDemo类中,method1()方法调用了同一个对象的method2()方法。   现在,我们要使用Spring AOP拦截该类定义的method1()和method2()方法,比如一个简单的性能检测,我们定义一个Aspect: @Aspect public class PerformanceTraceAspect {

Spring AOP学习笔记02:如何开启AOP

荒凉一梦 提交于 2020-08-11 20:07:17
   上文 简要总结了一些AOP的基本概念,并在此基础上叙述了Spring AOP的基本原理,并且辅以一个简单例子帮助理解。从本文开始,我们要开始深入到源码层面来一探Spring AOP魔法的原理了。   要使用Spring AOP,第一步是要将这一功能开启,一般有两种方式: 通过xml配置文件的方式; 通过注解的方式; 1. 配置文件开启AOP功能   我们先来看一下配置文件的方式,这个 上文 也提到过,在xml文件中加上对应的标签,而且别忘了加上对应的名称空间(即下面的xmlns:aop。。。): <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns ="http://www.springframework.org/schema/beans" xmlns:aop = "http://www.springframework.org/schema/aop" xsi:schemaLocation ="http://www.springframework.org/schema/beans http: // www.springframework.org/schema/beans/spring-beans-4.0.xsd http:

Spring Aop基于注解的实现

可紊 提交于 2020-08-11 14:52:40
一.AspectOriented Programing,面向切面编程。   AOP主要用于日志记录,性能统计,安全控制(权限控制),事务处理,异常处理等。将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。   Spring AOP织入增强(Advice)的方式有两种 如果连接点实现了接口采用jdk自带的动态代理的形式实现织入,如果连接点没有实现接口则采用动态字节码生成技术(CGLIB)实现织入。 二.AOP常用术语: 连接点(Joinpoint)   增强程序执行的某个特定位置(要在哪个地方做增强操作)。Spring仅支持方法的连接点,既仅能在方法调用前,方法调用后,方法抛出异常时等这些程序执行点进行织入增强。 切点(Pointcut)   切点是一组连接点的集合。AOP通过“切点”定位特定的连接点。通过数据库查询的概念来理解切点和连接点的关系再适合不过了:连接点相当于数据库中的记录,而切点相当于查询条件。 增强(Advice)   增强是织入到目标类连接点上的一段程序代码。表示要在连接点上做的操作。 切面(Aspect)   切面由切点和增强(引介)组成(可以包含多个切点和多个增强),它既包括了横切逻辑的定义,也包括了连接点的定义

Spring AOP如何产生代理对象

▼魔方 西西 提交于 2020-05-03 14:28:35
框架就是复杂的留给自己,简单的留给码农,像写hello world一样简单 早年开发Spring AOP程序时,都是xml文件配置aop(现在不流行xml了,注解@EnableAspectJAutoProxy大行其道),然后框架解析, 例如: ​它这种配置是如何解析的,拦截方法怎么拿到,注入到代理,代理对象如何生成, ​ 看下文,可以先参考我的博文bean创建过程 一个Spring Bean从无到有的过程 , xml元素解析就不具体说了,感兴趣自己研究 ​ ​ ​ 由于我用的tag是<aop:config>,那么解析类就是ConfigBeanDefinitionParser,解析时会注册一个AspectJAwareAdvisorAutoProxyCreator,一个高高高级的BeanPostProcessor ​ ​ ​ 然后解析aop:config子元素,由于方法众多,我只写了大块 if (POINTCUT.equals(localName)) { parsePointcut(elt, parserContext); } else if (ADVISOR.equals(localName)) { parseAdvisor(elt, parserContext); } else if (ASPECT.equals(localName)) { parseAspect(elt,