自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

架构师:通透,才能写出好代码!

也许当我老了,也一样写代码。不为别的,只为爱好。

  • 博客(22)
  • 资源 (1)
  • 收藏
  • 关注

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

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

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

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

前言待企划

2019-07-30 17:41:57 5377 3

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

前言你在书写业务逻辑的时候,是否会经常书写大量的判空校验。比如Service层或者Dao层的方法入参、入参对象、出参中你是否都有自己的一套校验规则?比如有些字段必传,有的非必传;返回值中有些字段必须有值,有的非必须等等~如上描述的校验逻辑,窥探一下你的代码,估摸里面有大量的if else吧。此部分逻辑简单(因为和业务关系不大)却看起来眼花缭乱(赶紧偷偷去喵一下你自己的代码吧,哈哈)。在攻城主键...

2019-07-27 02:02:03 18942 14

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

前言要想深入了解Spring对Bean Validation的支持,org.springframework.validation.beanvalidation这个包里面的这几个关键API必须搞明白喽,再使用起@Valid集合Spring时才能更加的收放自如~说明:这个包所在的jar是spring-context,属于Spring上下文的核心功能模块我把这个包内的类图截图如下:Bean...

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

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

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

2019-07-23 19:42:50 2782

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

前言同样的,本文算是关于数据校验Bean Validation这块的先行文章,对一些关键的基础类进行打点,为了更加顺畅的理解后面具体的文章内容,建议可以把此文当做一个伴手的工具收藏着~ValidationProviderResolverjavax.validation.ValidationProviderResolver:确定运行时环境中可用的bean验证提供程序列表。Validation...

2019-07-22 20:36:39 7729 7

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

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

2019-07-21 19:46:42 8337 17

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

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

2019-07-20 17:13:54 10511 2

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

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

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

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

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

2019-07-17 23:29:03 1569

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

前言

2019-07-15 22:55:40 1648 1

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

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

2019-07-15 17:34:12 2506 2

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

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

2019-07-14 18:31:39 5989 8

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

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

2019-07-10 12:07:22 13734 4

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

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

2019-07-09 12:19:11 13672 14

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

前言最近都在聊Spring的缓存抽象Spring Cache,上面文章深入介绍了Spring缓存集成进程缓存的第三方组件如Caffeine、Ehcache,若对此篇文章感兴趣,可移步:【小家Spring】玩转Spring Cache — 整合进程缓存之王Caffeine Cache和Ehcache3.x我们知道现在的应用大都以微服务的方式分布式部署,所以如果仅仅使用本地缓存是满足不了我们要求的...

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

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

前言前面文章大篇幅详细讲解了Spring Cache缓存抽象、三大缓存注解的工作原理等等。若是细心的小伙伴会发现:讲解的是我使用的缓存实现方案均是Spring默认提供的:ConcurrentMapCache。它是spring-context内置的,无需额外导包就能使用。但在实际开发过程中,Spring内建提供的实现显然是满足不了日益复杂的需求的,现实情况是很小有可能直接使用Concurrent...

2019-07-07 19:21:54 4994 5

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

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

2019-07-05 16:27:22 10823 5

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

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

2019-07-04 15:09:57 4916 3

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

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

2019-07-03 17:33:00 7076 5

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

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

2019-07-02 21:52:28 2368

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

前言在我刚入行不久时,总是对上下文(Context)、环境(Environment)这类抽象概念搞不清楚、弄不明白、玩不转,更是不懂它哥俩的区别或者说是联系(说实话从中文上来说不好区分,至少我是这么认为的)。直到现在,我可以根据自己的理解对这两者下个通俗易懂的定义(不喜勿喷):上下文:用来处理分层传递的抽象,代表着应用环境:当前上下文运行的环境,存储着各种全局变量。这些变量会影响着当前程...

2019-07-01 21:49:01 8893 2

YourBatman的端午节祝福:代码雨可执行jar包

一年一度的端午节到了,基于Java的AWT写了一个“代码雨”,寄托笔者对大家的祝福,这是可执行jar包,下载下来直接执行"java -jar codeRainApp.jar"即可运行看到效果

2022-06-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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