自定义博客皮肤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

专注Java领域分享、成长,拒绝浅尝辄止。公众号搜索:BAT的乌托邦

原创 深入了解数据校验(Bean Validation):从深处去掌握@Valid的作用(级联校验)以及常用约束注解的解释说明【享学Java】

前言 关于Bean Validation的基本原理篇完结之后,接下来就是小伙伴最为关心的干货:使用篇。 如果说是数据校验最基本的使用,我十分相信小伙伴们都能够使用,但是有个前提:Spring MVC。我大概的调查了一下,几乎100%的人都是使用在Spring MVC的Controller层面的,而...

2019-07-31 15:39:16 1662 1

原创 让Controller支持对平铺参数执行数据校验(默认Spring MVC使用@Valid只能对JavaBean进行校验)【享学Spring】

前言 待企划

2019-07-30 17:41:57 1839 2

原创 Spring方法级别数据校验:@Validated + MethodValidationPostProcessor优雅的完成数据校验动作【享学Spring】

前言 你在书写业务逻辑的时候,是否会经常书写大量的判空校验。比如Service层或者Dao层的方法入参、入参对象、出参中你是否都有自己的一套校验规则?比如有些字段必传,有的非必传;返回值中有些字段必须有值,有的非必须等等~ 如上描述的校验逻辑,窥探一下你的代码,估摸里面有大量的if else吧。此...

2019-07-27 02:02:03 5602 6

原创 详述Spring对Bean Validation支持的核心API:Validator、SmartValidator、LocalValidatorFactoryBean...【享学Spring】

前言 要想深入了解Spring对Bean Validation的支持,org.springframework.validation.beanvalidation这个包里面的这几个关键API必须搞明白喽,再使用起@Valid集合Spring时才能更加的收放自如~ 说明:这个包所在的jar是spri...

2019-07-25 21:55:17 1666 2

原创 深入了解数据校验(Bean Validation):ValidatorFactory和Validator等核心API【享学Java】

前言 上篇文章 已经介绍了Bean Validation它的概念、标准,已经感受了一把使用它来对JavaBean进行校验。本文将继续讲解它的整个执行过程~ ValidatorFactory 在准备好了一个javax.validation.Configuration后,其实接下来最重要的事就是根据配...

2019-07-23 19:42:50 1088 0

原创 深入了解数据校验(Bean Validation):基础类打点(ValidationProvider、ConstraintDescriptor、ConstraintValidator)【享学Java】

前言 同样的,本文算是关于数据校验Bean Validation这块的先行文章,对一些关键的基础类进行打点,为了更加顺畅的理解后面具体的文章内容,建议可以把此文当做一个伴手的工具收藏着~ ValidationProviderResolver javax.validation.ValidationP...

2019-07-22 20:36:39 2275 5

原创 深入了解数据校验:Java Bean Validation 2.0(JSR303、JSR349、JSR380)Hibernate-Validation 6.x使用案例【享学Java】

前言 前几篇文章在讲Spring的数据绑定的时候,多次提到过数据校验。可能有人认为数据校验模块并不是那么的重要,因为手动都可以做。若是这么想的话,那就大错特错了~ 前面讲解DataBinder的时候一个小细节,它所在的包是:org.springframework.validation,并且在分析源...

2019-07-21 19:46:42 2960 12

原创 聊聊Spring中的数据绑定 --- WebDataBinder、ServletRequestDataBinder、WebBindingInitializer...【享学Spring】

前言 看看它的继承树: 从继承树中可以看到,web环境统一对数据绑定进行了增强,

2019-07-20 17:13:54 3138 0

原创 聊聊Spring中的数据绑定 --- DataBinder本尊(源码分析)【享学Spring】

前言 数据绑定 这个概念在任何一个成型的框架中都是特别重要的(尤其是web框架),它能让框架更多的自动化,更好容错性以及更高的编码效率。它提供的能力是:把字符串形式的参数转换成服务端真正需要的类型的转换(当然可能还包含校验)。 对Spring中的数据绑定场景,小伙伴们就再熟悉不过了。比如我们Con...

2019-07-18 20:44:36 2037 5

原创 老项目迁移问题:@ImportResource导入的xml配置里的Bean能够使用@PropertySource导入的属性值吗?【享学Spring】

前言 写这篇文章原由于昨天半夜一个小伙伴咨询我的一个问题,涉及到了这方面的知识,最后协助解决了,因此在此记录下来分享给大家。 这种case会发生在传统Spring项目向SpringBoot迁移的过程中,我个人认为在现阶段大家都是有可能碰到的,因此可以收藏本文,对你后续或许有所帮助~ 情景还原 为了...

2019-07-17 23:29:03 648 0

原创 Spring IoC是如何使用BeanWrapper和Java内省结合起来给Bean属性赋值的【享学Spring】

前言

2019-07-15 22:55:40 656 0

原创 聊聊Spring中的数据绑定 --- BeanWrapper以及Java内省Introspector和PropertyDescriptor【享学Spring】

PropertyDescriptor 照例,上一张类结构图(我承认自己画的类图很丑) PropertyAccessorFactory PropertyAccessorFactory提供了创建BeanWrapperImpl和DirectFieldAccessor类的工厂

2019-07-15 17:34:12 831 0

原创 聊聊Spring中的数据绑定 --- 属性访问器PropertyAccessor和实现类DirectFieldAccessor的使用【享学Spring】

前言 本篇文章聊聊Spring数据访问、绑定体系中一个非常重要的组成: 属性访问器(PropertyAccessor)。 注意此接口和属性解析器(PropertyResolver)是有本质区别的,属性解析器是用来获取配置数据的,详细使用办法可参考:【小家Spring】关于Spring属性处理器P...

2019-07-14 18:31:39 1457 6

原创 玩转Spring Cache --- 扩展缓存注解支持失效时间TTL【享学Spring】

前言 在上篇文章讲解整合分布式缓存Redis时埋下了一个伏笔:如何让我们的缓存注解支持自定义TTL失效时间呢? 这篇文章本可以不用写,因为其实基于Redis的RedisCacheManager它本身天生就是能够针对不同的Cache配置不同的TTL的。但是我发现有的小伙伴觉得使用得还是不太方便,希望...

2019-07-10 12:07:22 3982 1

原创 玩转Spring Cache --- @Cacheable使用在MyBatis的Mapper接口上(解决Null key returned for cache operation)【享学Spring】

前言 据我观察,大多数小伙伴学习一门技术一般都是度娘+ctrl v的模式。比如从网络的世界里你能找到有人说:@Cacheable不仅仅能标注在实例方法上,也能标注在接口方法上。 so,你回来试了试把它标注在自己的MyBatis的Mapper接口上,希望它能帮助分摊DB的压力。想法非常正派且看似可行...

2019-07-09 12:19:11 4715 9

原创 玩转Spring Cache --- 整合分布式缓存Redis Cache(使用Lettuce、使用Spring Data Redis)【享学Spring】

前言 最近都在聊Spring的缓存抽象Spring Cache,上面文章深入介绍了Spring缓存集成进程缓存的第三方组件如Caffeine、Ehcache,若对此篇文章感兴趣,可移步:【小家Spring】玩转Spring Cache — 整合进程缓存之王Caffeine Cache和Ehcach...

2019-07-08 18:34:13 1146 2

原创 玩转Spring Cache --- 整合进程缓存之王Caffeine Cache和Ehcache3.x【享学Spring】

前言 前面文章大篇幅详细讲解了Spring Cache缓存抽象、三大缓存注解的工作原理等等。若是细心的小伙伴会发现:讲解的是我使用的缓存实现方案均是Spring默认提供的:ConcurrentMapCache。它是spring-context内置的,无需额外导包就能使用。 但在实际开发过程中,Sp...

2019-07-07 19:21:54 1927 2

原创 玩转Spring Cache --- @Cacheable/@CachePut/@CacheEvict注解的原理深度剖析和使用【享学Spring】

dsadas 还有两点需要注意的就是 上面的实现是通过proxy的形式实现,那么对象的方法是内部调用(即 this 引用)而不是外部引用,则会导致 proxy失效,也就是注解失效。 非public方法同上 @CacheEvict标签不会对抛出异常的方法的缓存进行清空,通过将beforeInvoc...

2019-07-05 16:27:22 4165 2

原创 玩转Spring Cache --- @Cacheable/@CachePut/@CacheEvict缓存注解相关基础类打点【享学Spring】

前言 本文算是了解缓存注解原理的先行文章,因为它抽象出来的模块类比较多,所以做这篇文章进行关键类的打点。 若我们需要扩展缓存注解的能力,对这些抽象是非常有必要深入了解的~ Spring内置的三大注解缓存是: Cacheable:缓存 CacheEvict:删除缓存 CachePut:更新缓存 ...

2019-07-04 15:09:57 2127 2

原创 玩转Spring Cache --- 开启基于注解的缓存功能@EnableCaching原理了解【享学Spring】

前言 缓存现已成为了项目的标配,更是面必问的知识点。若你说你的项目中还没有使用到缓存,估计你都不太好意思介绍你的项目。 Spring3.1之后就引入了基于注解的缓存技术,但是要明白Spring基于注解的缓存技术并不是一个具体的实现方案(EHCache、OSCache、Redis才是具体的缓存方案)...

2019-07-03 17:33:00 2933 3

原创 聊聊Spring Cache的缓存抽象与JSR107缓存抽象JCache,并使用API方式使用Spring Cache【享学Spring】

前言 缓存(Cache)是计算机领域一个极其重要的概念,它是提高硬件(比如CPU)、软件运行效率非常有效的一个手段,它的最大特点就是:快。 缓存就是数据交换的缓冲区(称作:Cache),当某一硬件要读取数据时,会首先从缓存汇总查询数据,有则直接执行返回即可。它被运用在计算机领域的各个方面,介绍如下...

2019-07-02 21:52:28 854 0

原创 聊聊Spring的环境抽象Environment,以及配置@Profile使用详解(介绍profile的6种激活方式)【享学Spring】

前言 在我刚入行不久时,总是对上下文(Context)、环境(Environment)这类抽象概念搞不清楚、弄不明白、玩不转,更是不懂它哥俩的区别或者说是联系(说实话从中文上来说不好区分,至少我是这么认为的)。 直到现在,我可以根据自己的理解对这两者下个通俗易懂的定义(不喜勿喷): 上下文:用来...

2019-07-01 21:49:01 1543 0

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