![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
胡峻峥
快乐的程序员
展开
-
彻底理解Spring如何解决循环依赖
一、Spring bean生命周期可以简化为以下5步。1、构建BeanDefinition2、实例化 Instantiation3、属性赋值 Populate4、初始化 Initialization(BeanPostprocessor -> Aware,init)5、销毁 Destruction二、Spring 三级缓存作用2.1、一级缓存/** Cache of singleton objects: bean name to bean instance..原创 2020-12-21 00:52:59 · 645 阅读 · 0 评论 -
spring注解工具类AnnotatedElementUtils和AnnotationUtils
一、前言 spring为开发人员提供了两个搜索注解的工具类,分别是AnnotatedElementUtils和AnnotationUtils。在使用的时候,总是傻傻分不清,什么情况下使用哪一个。于是我做了如下的整理和总结。二、AnnotationUtils官方解释 功能 用于处理注解,处理元注解,桥接方法(编译器为通用声明生成)以及超级方法(用于可选注解继承)的常规实用程序方...原创 2018-10-20 08:42:31 · 8498 阅读 · 3 评论 -
高效使用hibernate-validator校验框架
一、前言 高效、合理的使用hibernate-validator校验框架可以提高程序的可读性,以及减少不必要的代码逻辑。接下来会介绍一下常用一些使用方式。二、常用注解说明限制 说明 @Null 限制只能为null @NotNull 限制必须不为null @AssertFalse 限制必须为false @AssertTrue 限制必须为tr...原创 2018-11-13 19:15:42 · 1224 阅读 · 0 评论 -
kafka告警简单方案
一、前言 为什么要设计kafka告警方案?现成的监控项目百度一下一大堆,KafkaOffsetMonitor、KafkaManager、 Burrow等,具体参考:kafka的消息挤压监控。由于本小组的项目使用的kafka集群并没有被公司的kafka-manager管理,所以只能自己简单做一个告警。二、告警方案 首先需要两个定时任务,之间的通信依靠延迟队列。 左边的定...原创 2018-12-04 15:46:58 · 2698 阅读 · 0 评论 -
RedisCacheManager设置Value序列化器技巧
CacheManager基本配置 请参考博文:springboot2.0 redis EnableCaching的配置和使用RedisCacheManager构造函数/** * Construct a {@link RedisCacheManager}. * * @param redisOperations */@SuppressWarnings("rawtypes"...原创 2018-12-10 15:46:28 · 2321 阅读 · 0 评论 -
SpringSecurity整合JWT
一、前言 最近负责支付宝小程序后端项目设计,这里主要分享一下用户会话、接口鉴权的设计。参考过微信小程序后端的设计,会话需要依靠redis。相关的开发人员和我说依靠Redis并不是很靠谱,redis在业务高峰期不稳定,容易出现问题,总会出现用户会话丢失、超时的问题。之前听过JWT相关的设计,决定尝试一下。二、什么是JWT JSON Web Token(JWT)是一个开放标准(RFC ...原创 2019-01-19 23:55:59 · 1079 阅读 · 0 评论 -
Spring BPP中优雅的创建动态代理Bean
一、前言 本文章所讲并没有基于Aspectj,而是直接通过Cglib以及ProxyFactoryBean去创建代理Bean。通过下面的例子,可以看出Cglib方式创建的代理Bean和ProxyFactoryBean创建的代理Bean的区别。二、基本测试代码 测试实体类,在BPP中创建BppTestDepBean类型的代理Bean。@Componentpublic stat...原创 2019-03-03 00:55:05 · 211 阅读 · 0 评论 -
Springboot国际化信息(i18n)解析
国际化信息理解国际化信息也称为本地化信息 。 Java 通过 java.util.Locale 类来表示本地化对象,它通过 “语言类型” 和 “国家/地区” 来创建一个确定的本地化对象 。举个例子吧,比如在发送一个具体的请求的时候,在header中设置一个键值对:"Accept-Language":"zh",通过Accept-Language对应值,服务器就可以决定使用哪一个区域的语言,找到相...原创 2019-09-14 23:35:27 · 11266 阅读 · 1 评论