自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

YourBatman

也许当我老了,也一样写代码。不为别的,只为爱好。公众号搜索:BAT的乌托邦...

原创 Java中创建对象的5种方式,你都知道几种?【享学Java】

前言 说起Java创建的对象一共有多少种方式这个问题,还是曾经有一次面试的时候被问起的。作为java开发者,我们每天创建很多对象,但是我们通常使用依赖注入的方式管理系统,比如:创建对象的工作交给Spring。 那么连使用new关键字创建对象都离我们渐行渐远的今天,你是否知道Java中创建对象有哪些...

2019-06-30 20:33:18 736 0

原创 Java单例模式的7种写法中,为何用Enum枚举实现被认为是最好的方式?【享学Java】

前言 如果看到标题就能白表示赞同的小伙伴,那肯定看过Joshua Bloch大神说过的这么一句话:单元素的枚举类型已经成为实现Singleton的最佳方法。翻译成人话就是:实现单例模式的最佳方法是使用枚举。 单例模式 单例模式(Singleton Pattern):确保一个类有且只有一个实例,并提...

2019-06-30 18:18:05 742 0

原创 Java中的引用类型(强引用、软引用、弱引用、虚引用)介绍,示例WeakHashMap的使用【享学Java】

Java语言中的数据类型可划分为`值类型`和`引用类型`。从`JDK 1.2`版本开始,把对象的引用分为**4种级别**,从而使程序能**更加灵活地**控制对象的生命周期。 这4种级别由**高到低依**次为:**强引用、软引用、弱引用和虚引用**。

2019-06-30 14:07:17 765 2

原创 那些年我们在Java泛型上躺过的枪---万恶的泛型擦除【享学Java】

泛型(`Generics`),从字面的意思理解就是泛化的类型,即**参数化类型**。 我们都知道,泛型是`JDK5`提供的一个非常重要的新特性,它有非常多优秀的`品质`:能够把很多问题从运行期提前到编译器,从而使得程序更加的健壮。 但是因为Java5要保持良好的向下兼容性,所以从推出之际一直到现...

2019-06-29 22:32:12 347 0

原创 聊聊java中的多继承,解决Java8接口default方法多继承冲突问题【享学Java】

前言 众所周知,Java是一种面向对象的只允许单继承的语言,这是每个Java程序员从业者都知道定理。 本文的目的,主要从两个方面来思考Java单继承的这个问题: 为什么Java类被设计为只能单继承? 怎样曲线实现多继承的效果? Java类为何设计为只能单继承? 我们都知道Java的主要设计者是...

2019-06-29 12:59:50 1357 2

原创 JDK基础类库java.util包下那些你可能不知道的工具们大盘点(一)EnumMap、EnumSet【享学Java】

前言 聊了很长时间逻辑性非常强的Spring框架,这篇文章来些轻松点的内容:聊聊JDK中那些你可能不知道的工具。 正所谓玩好JDK,面试不用愁。那么JDK好掌握吗,答案是非常难。大家平时理解的JDK可能就只是指的它的基础类库部分,但其实此处可扫盲一下。 JDK主要包含有如下三个部分: Java运...

2019-06-29 11:10:17 480 0

原创 聊聊Spring的bean覆盖(存在同名name/id问题),介绍Spring名称生成策略接口BeanNameGenerator【享学Spring】

前言 我们知道Spring容器可以简单粗暴的把它理解成一个大大的Map,它里面存储着容器所管理的所有的单实例对象,从我们使用getBean(String beanName)使用bean名称就能获取到唯一一个Bean实例就能“证明”这一点。 可你是否曾想过:既然它是Map,那万一我们写的@Bean的...

2019-06-27 20:46:09 4708 0

原创 Spring依赖注入@Autowired深层原理、源码级分析,感受DI带来的编程之美【享学Spring】

前言

2019-06-26 16:07:14 1252 4

原创 Spring依赖注入(DI)核心接口AutowireCandidateResolver深度分析,解析@Lazy、@Qualifier注解的原理【享学Spring】

前言 关于AutowireCandidateResolver接口,可能绝大多数小伙伴都会觉得陌生。但若谈起@Autowired、@Primary、@Qualifier、@Value、@Lazy等注解,相信没有小伙伴是不知道的吧。 AutowireCandidateResolver 用于确定特定的B...

2019-06-26 10:52:52 3095 3

原创 从@Async案例找到Spring框架的bug:exposeProxy=true不生效原因大剖析+最佳解决方案【享学Spring】

前言 从本文标题就能看到靓丽的字眼:Spring框架bug。相信有的小伙伴心里小九九肯定会说:又是一篇标题党文章。此处可以很负责人的告诉大家:本人任何文章绝不哗众取宠,除了干货还是干货。 相信关注过我的小伙伴都是知道的,我只递送干货,绝不标题党来浪费大家的时间和精力~那无异于谋财害命(说得严重了...

2019-06-24 20:34:51 2156 9

原创 使用@Async异步注解导致该Bean在循环依赖时启动报BeanCurrentlyInCreationException异常的根本原因分析,以及提供解决方案【享学Spring】

前言 今天在使用@Async的时候,碰到了一个问题:Spring循环依赖(circular reference)问题。 或许说到这,有的小伙伴就会大惊失色了。Spring不是解决了循环依赖问题吗,它是支持循环依赖的呀?怎么会呢? 说实话在这之前我也这么坚信的,而且每次使用得也屡试不爽。如果你目前也...

2019-06-24 09:17:21 6681 35

原创 熟练使用IDEA的断点调试(Breakpoint),大大提升你调试代码的效率(行断点、属性断点、异常断点、条件断点、远程debug...)【享学Java】

前言 断点调试是每个**程序猿(媛)**从业者避不开的技能之一,它到底有多重要呢?为了体现本文的重要性,我引用几个大佬的话来表达断点调试的重要性: 调试技巧比编码技巧更为重要,因为花费在调试上的时间往往比编码还多,学到的东西比编码中学到的还多 调试技能重要性甚⾄超过学习⼀门语⾔ 不会调试的程序员...

2019-06-21 15:32:53 3278 4

原创 一文告诉你Spring是如何利用“三级缓存“巧妙解决Bean的循环依赖问题的【享学Spring】

前言 循环依赖:就是N个类循环(嵌套)引用。 通俗的讲就是N个Bean互相引用对方,最终形成闭环。用一副经典的图示可以表示成这样(A、B、C都代表类,虚线代表引用关系): 注意:其实可以N=1,也就是极限情况的循环依赖:自己依赖自己 另需注意:这里指的循环引用不是方法之间的循环调用,而是对...

2019-06-19 22:39:19 22391 91

原创 详解Spring Framework提供的扩展点:ApplicationContextInitializer应用上下文初始化器,以及它在SpringBoot中的应用【享学Spring】

前言 我事前百度了一下ApplicationContextInitializer的相关文章,无一例外全部是基于SpringBoot进行讲解的。殊不知,这个类属于Spring Framework的而并不属于SpringBoot,我认为开门见山就在SpringBoot里讲解是不太妥的,毕竟想要理解好S...

2019-06-18 11:58:47 946 0

原创 3种方式实现多数据源控制/切换、实现读写分离;演示借助AbstractRoutingDataSource实现多数据源的动态切换代码【享学Spring】

前言 什么时候一个Java工程里需要控制多个数据源呢?我认为有如下两种情况: 业务需要。比如项目里要实现两个DB的双写/数据迁移,或者微服务边界划分不清使得一个工程直链了多个DB 读写分离。现在稍微大型一点的网站,为了提升DB的吞吐量和性能,数据库一般都会采用集群部署(1个Master+N个Sl...

2019-06-17 14:15:36 643 1

原创 Spring事务监听机制---使用@TransactionalEventListener处理数据库事务提交成功后再执行操作(附:Spring4.2新特性讲解)【享学Spring】

前言 从标题就可以看出,本篇文章内容既和Spring的事件/监听机制有关,同时还和Spring事务以及Spring事务同步机制有关。 为了给这篇文章铺好路,建议可以先了解下: Spring事件监听机制: 【小家Spring】从Spring中的(ApplicationEvent)事件驱动机制出发,聊...

2019-06-14 18:08:23 4860 1

原创 Spring是如何保证同一事务获取同一个Connection的?使用Spring的事务同步机制解决:数据库刚插入的记录却查询不到的问题【享学Spring】

前言 关于Spring的事务,我前面用了大量的篇幅从应用层面、原理层面都进行了比较全方位的一个讲解。但是因为它过于重要,所以本文继续做补充:Spring事务的同步机制 Spring事务同步机制?我猜测很多小伙伴从来没听过有这么一说法,毕竟它在平时开发中你可能很少遇到(如果你没怎么考虑过系统性能的话...

2019-06-13 12:39:25 3284 17

原创 详解PropertyPlaceholderConfigurer、PropertyOverrideConfigurer等对属性配置文件Properties的加载和使用【享学Spring】

前言 本文主要从PropertyResourceConfigurer出发,主要聊聊由它衍生出来的一些实用API。 Spring的PropertyResourceConfigurer是个抽象类,继承自PropertiesLoaderSupport,并实现了接口BeanFactoryPostProce...

2019-06-11 21:56:03 1303 2

原创 Spring中PropertySource属性源配置文件的优先级、顺序问题大解析(加载流程)【享学Spring】

前言 我相信关于Spring的配置文件的优先级、加载顺序一直是个老生常谈的问题,即使经常被提起,但却还是一个非常容易就被遗忘或者弄混的知识点。 如果你度娘上去搜索:Spring Boot 配置顺序等关键字,会发现解释的文章非常之多,但每每够是过眼云烟,事后没多久就忘了。 我个人经验总结若想把这块变...

2019-06-11 14:57:07 2779 0

原创 关于Spring属性处理器PropertyResolver以及应用运行环境Environment的深度分析,强大的StringValueResolver使用和解析【享学Spring】

前言 若直接说PropertyResolver或者StringValueResolver可能很多人都会非常的陌生,但是我若提到EmbeddedValueResolverAware这个Spring为我们提供的感知接口,相信很多小伙伴就会感到亲切了。 我们的任何一个Bean实现了EmbeddedVal...

2019-06-10 18:52:59 2691 2

原创 使用commons-configuration2读取properties、yaml、xml配置文件,实现配置文件的热更新【享学Java】

`Commons Configuration`作为一个优秀的配置管理库,凭借着优秀的设计以及提供了热加载等使用功能,被不少其它组件作为基础配置管理组件使用,流行度较高。 从2004年发展至今,它一共有两个大版本:1.x和2.x。这两个大版本之前因为改过包名,并且GAV坐标也不一样,因此他俩:**互...

2019-06-10 15:07:12 2066 0

原创 【小家Spring】Spring中@Value注解有多强大?从原理层面去剖析为何它有如此大的“能耐“

前言 @Value注解是Spring3.0后提出来的一个注解。注解内容本身非常之简单,但是它提供的功能非常之强大。 首先从它的注解定义知道,它能使用在: 字段上 set方法上 方法入参上 当作元注解 它的功能大致可归类为: 注入普通字符串 书写SpEL表达式(功能强大包括:获取系统属性、调用...

2019-06-07 16:34:39 6787 4

原创 【小家Spring】SpEL你感兴趣的实现原理浅析spring-expression~(SpelExpressionParser、EvaluationContext、rootObject)

前言 Spring Expression Language(简称 SpEL)是一个支持查询和操作运行时对象导航图功能的强大的表达式语言。它的语法类似于传统 EL,但提供额外的功能,最出色的就是函数调用和简单字符串的模板函数。 这不得不介绍的SpEL的概念。EL:Expression Languag...

2019-06-07 15:09:32 6399 6

原创 【小家Spring】聊聊Spring中的格式化:Formatter、AnnotationFormatterFactory、DateFormatter以及@DateTimeFormat...

前言

2019-06-04 15:51:48 1213 0

原创 【小家Java】聊聊Java中的比较器(排序):Comparable和Comparator;Spring中的Comparators和AnnotationAwareOrderComparator

前言 “顺序“在任何一个领域里都是非常重要的一个概念,程序也不例外。不同的执行顺序,能对你的执行结果产生直接影响。 既然涉及到顺序,那就要求排序。所以本文讨论的就是排序中使用到的比较器Comparable和Comparator。 Comparable和Comparator都是java.包下的两个接...

2019-06-03 19:26:39 675 0

原创 【小家Spring】聊聊Spring中的数据转换:Converter、ConversionService、TypeConverter、PropertyEditor

前言 前面聊了HttpMessageConverter,它的名称叫消息转换器,所以它面向的是消息体,和Http强相关,所以该接口所在的包为:org.springframework.http.converter 数据转换,顾名思义就是数据类型之间的转换,但是对于数据转换,有的是可以进行转化的,例如字...

2019-06-03 10:51:50 3314 0

提示
确定要删除当前文章?
取消 删除