cglib

Spring为什么默认把bean设计成单例模式

北城余情 提交于 2020-11-29 15:33:15
熟悉Spring开发的朋友都知道Spring提供了5种scope分别是singleton、prototype、request、session、global session。 如下图是官方文档上的截图,感兴趣的朋友可以进去看看这五种分别有什么不同。今天要介绍的是这五种中的前两种,也是Spring最初提供的bean scope singleton 和 prototype。 Spring官方文档介绍如下图: 更多内容可以看官方文档介绍: https://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch04s04.html 单例bean与原型bean的区别 如果一个bean被声明为单例的时候,在处理多次请求的时候在Spring容器里只实例化出一个bean,后续的请求都公用这个对象,这个对象会保存在一个map里面。当有请求来的时候会先从缓存(map)里查看有没有,有的话直接使用这个对象,没有的话才实例化一个新的对象,所以这是个单例的。但是对于原型(prototype)bean来说当每次请求来的时候直接实例化新的bean,没有缓存以及从缓存查的过程。 1、画图分析 2、源码分析 生成bean时先判断单例的还是原型的。 如果是单例的则先尝试从缓存里获取,没有在新创建。 结论: 单例的bean只有第一次创建新的bean

赶紧收藏!Java大牛熬夜一周肝出的《Spring AOP/IOC源码笔记》

自作多情 提交于 2020-11-28 12:59:13
Spring AOP/IOC源码笔记脑图 AOP原理 AOP术语 Spring对AOP的支持 知识点 高清完整版Spring AOP/IOC源码笔记脑图请一键三连+评论,然后添加VX(tkzl6666)即可免费领取 IOC和DI的概念 使用IOC的好处 IOC容器 IOC容器装配Bean Spring AOP/IOC源码笔记资料 这个【Spring AOP/IOC源码笔记】是全程手打熬夜肛出来的,共142页,希望各位读者可以一键三连+评论,然后添加VX(tkzl6666)即可免费领取 Spring AOP和IOC介绍 1. Spring介绍 2. 引出Spring 3.Spring模块 4. Core模块快速入门 5. bean对象创建细节 对象依赖 1. 回顾以前对象依赖 2. Spring依赖注入 AOP入门 1. cglib代理 2. 手动实现AOP编程2.1案例分析: 3. AOP的概述 4. 使用Spring AOP开发步骤 5. 切入点表达式 JDBCTemplate和Spring事务 1. 回顾对模版代码优化过程 2. 使用Spring的JDBC 3. 事务控制概述 4.事务属性 Spring事务原理 1、阅读本文需要的基础知识 2、两个不靠谱直觉的例子 3、Spring事务传播机制 4、多线程问题 5、啥是BPP? 6、认识Spring事务几个重要的接口

阿里P8,还是你牛

喜欢而已 提交于 2020-11-28 03:37:34
疫情播报 北京市卫健委刚发布消息,6月19日0时至24时,新增报告本地确诊病例22例、疑似病例4例、无症状感染者2例。截至6月19日24时,累计报告本地确诊病例625例,累计出院411例,在院205例,累计死亡9例。尚在观察的无症状感染者17例。 6月19日0时至24时,无新增报告境外输入新冠肺炎确诊病例、疑似病例和无症状感染者。截至6月19日24时,累计报告境外输入确诊病例174例,累计出院173例,在院1例。新增确诊病例中,海淀区1例、丰台区13例、大兴区8例。 全市有13个区无本地报告新增确诊病例,具体为平谷区自有疫情以来无报告病例、延庆区148天、怀柔区134天、顺义区132天、密云区129天、昌平区123天、通州区121天、朝阳区5天、石景山区5天、门头沟区4天、房山区4天、东城区3天、西城区1天。 P8招助理 阿里巴巴一位入职三个月的P8员工公开在招聘软件上招聘私人助理,月薪1.6万元,并称许诺可以给出正式编制,为被招聘者申请阿里巴巴正职。 软件中没有助理 是的,软件中没有助理,但是有代理。 什么是代理呢,其实很好理解,就是不直接访问目标,而是通过一个中间层来访问,就好像下面这样: Java的静态代理 举个例子,如果我们一些水果,比如:香蕉、苹果等,写成Java代码,大概是下面这个样子: //Fruit.java /** * 水果的接口 */ public

Spring AOP

杀马特。学长 韩版系。学妹 提交于 2020-11-21 13:32:08
Spring整合单元测试 在前面的案例中我么需要自己创建ApplicationContext对象,然后在调用getBean来获取需要测试的Bean Spring提供了一种更加方便的方式来创建测试所需的ApplicationContext,并且可以帮助我们把需要测试的Bean直接注入到测试类中 添加依赖: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.2.2.RELEASE</version> </dependency> 测试代码: import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.annotation.Resource; @RunWith(SpringJUnit4ClassRunner.class)//固定写法 @ContextConfiguration("classpath

执行流程 | 你真的了解Spring AOP的执行顺序吗?

老子叫甜甜 提交于 2020-11-21 12:21:55
Hi! 我是小小,我们又见面了,今天的主要内容是,你真的了解Spring AOP的执行顺序吗?跟随着我的脚步,一块丈量世界,了解世界,重新认识,重新了解Spring AOP的执行顺序。 聊一聊毕业四个月的感受 毕业四个月了,劳动合同还没有签,一切都没有稳定下来,不过也似乎也将要稳定下来了,生活如流水一般非常平稳的运行着,而我的公众号也在非常平稳的编写着,当然啦,自己最喜欢听的音乐也还是没有变,MySoul,一成不变,似乎生活进入了稳定状态,又或者生活没有进入稳定状态,我也不知道,只知道,这就是生活,唯有这样的生活才能继续进行。这四个月对我感觉,就是每天敲啊敲,每天的敲,拿着微薄的薪水,获得着微薄的收入,或许这就是生活,自己的,也许这就是一个普通人,再也不能普通过的了生活了,好啦,不吐槽了,生活还需要继续进行下去,我们隆重的开始今天的正文。 AOP核心概念 需要了解AOP,首先需要了解这些Spring AOP这些核心概念。 Aspect 切面:由一系列切点,增强和引入组成的模块对象,可定义优先级,从而影响增强和引入的执行顺序,事物管理,在Java中就是一个切面应用的例子。 Join point 接入点:程序执行期的一个点,例如方法执行,类初始化,异常处理,在Spring AOP中,接入点始终表示方法的执行。 Advice 增强切面在特点接入点的执行动作,包括 around

读书笔记

时光怂恿深爱的人放手 提交于 2020-11-19 03:08:19
一个Bean的一生。 CGLIB动态字节码 这个要进一步了解一下,以前没有接触过 来源: oschina 链接: https://my.oschina.net/u/3895152/blog/3022610

Java动态代理

回眸只為那壹抹淺笑 提交于 2020-11-18 23:56:22
jdk动态代理 实现原理:利用字节码技术,生成新的class文件,来达到动态代理效果。 新的class文件是怎么组织的?由于代理目标是接口,则通过实现接口和继续代理类来完成。看看下面的例子更容易明白。 demo 接口 public interface PeoPleInterface { void say() throws Throwable; } 实现类 public class GrilPeoPle implements PeoPleInterface { @Override public void say() { System.out.println("女人说"); } } 代理类 public class PeoPleInvacationHandler implements InvocationHandler { private Object obj; public PeoPleInvacationHandler(Object obj) { this.obj = obj; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("人类开始"); Object invoke = method.invoke

Spring (AOP和IOC)

試著忘記壹切 提交于 2020-11-11 05:23:46
IoC(Inversion of Control) (1). IoC(Inversion of Control)是指容器控制程序对象之间的关系,而不是传统实现中,由程序代码直接操控。控制权由应用代码中转到了外部容器,控制权的转移是所谓反转。 对于Spring而言,就是由Spring来控制对象的生命周期和对象之间的关系;IoC还有另外一个名字——“依赖注入(Dependency Injection)”。从名字上理解,所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,即由容器动态地将某种依赖关系注入到组件之中。 (2). 在Spring的工作方式中,所有的类都会在spring容器中登记,告诉spring这是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。 (3). 在系统运行中,动态的向某个对象提供它所需要的其他对象。 (4). 依赖注入的思想是通过反射机制实现的,在实例化一个类时,它通过反射调用类中set方法将事先保存在HashMap中的类属性注入到类中。 总而言之,在传统的对象创建方式中

图解Java 垃圾回收机制

≡放荡痞女 提交于 2020-11-09 17:21:50
摘要:   Java技术体系中所提倡的 自动内存管理 最终可以归结为自动化地解决了两个问题: 给对象分配内存 以及 回收分配给对象的内存 ,而且这两个问题针对的内存区域就是Java内存模型中的 堆区。关于对象分配内存问题,笔者的博文《JVM 内存模型概述》已经阐述了 如何划分可用空间及其涉及到的线程安全问题,本文将结合垃圾回收策略进一步给出内存分配规则。垃圾回收机制的引入可以有效的防止内存泄露、保证内存的有效使用,也大大解放了Java程序员的双手,使得他们在编写程序的时候不再需要考虑内存管理。本文着重介绍了判断一个对象是否可以被回收的两种经典算法,并详述了四种典型的垃圾回收算法的基本思想及其直接应用——垃圾收集器,最后结合内存回收策略介绍了内存分配规则。 友情提示:   为了更好地了解Java的垃圾回收机制,笔者建议读者先要对JVM内存模型有一个整体的了解和把握。鉴于笔者在博文《JVM 内存模型概述https://blog.csdn.net/justloveyou_/article/details/71189093》中已经深入介绍了JVM内存模型,此不赘述。   本文内容是基于 JDK 1.6 的,不同版本虚拟机之间也许会有些许差异,但不影响我们对JVM垃圾回收机制的整体把握和了解。 一、垃圾回收机制的意义   在笔者的上一篇博文《JVM 内存模型概述》中提到,JVM

阿里精选:Java 代码精简之道

烈酒焚心 提交于 2020-11-08 20:21:51
Photo @ Priscilla Du Preez 文 | 常意 前言 古语有云: 道为术之灵,术为道之体;以道统术,以术得道。 其中:“道”指“规律、道理、理论”,“术”指“方法、技巧、技术”。意思是:“道”是“术”的灵魂,“术”是“道”的肉体;可以用“道”来统管“术”,也可以从“术”中获得“道”。 在拜读大佬“孤尽”的文章 《Code Review是苦涩但有意思的修行》 时,感受最深的一句话就是:“优质的代码一定是少即是多的精兵原则”,这就是大佬的代码精简之“道”。 工匠追求“术”到极致,其实就是在寻“道”,且离悟“道”也就不远了,亦或是已经得道,这就是“工匠精神”——一种追求“以术得道”的精神。如果一个工匠只满足于“术”,不能追求“术”到极致去悟“道”,那只是一个靠“术”养家糊口的工匠而已。作者根据多年来的实践探索,总结了大量的 Java 代码精简之“术”,试图阐述出心中的 Java 代码精简之“道”。 1.利用语法 1.1.利用三元表达式 普通: String title;if (isMember(phone)) { title = "会员";} else { title = "游客";} 精简: String title = isMember(phone) ? "会员" : "游客"; 注意:对于包装类型的算术计算,需要注意避免拆包时的空指针问题。 1.2.利用 for