springboot新发现
文章平均质量分 78
it噩梦
好记性不如烂笔头
展开
-
Spring bean 循环依赖
文章目录循环依赖的产生构造循环依赖的解决思路1思路2示例1:用 @Lazy 为构造方法参数生成代理示例2:用 ObjectProvider 延迟依赖对象的创建示例3:用 @Scope 产生代理示例4:用 Provider 接口解决解决 set 循环依赖的原理一级缓存一级缓存与循环依赖二级缓存二级缓存与创建代理三级缓存循环依赖的产生首先要明白,bean 的创建要遵循一定的步骤,必须是创建、注入、初始化三步,这些顺序不能乱set 方法(包括成员变量)的循环依赖如图所示可以在「a 创建」和「.原创 2022-02-08 15:09:39 · 773 阅读 · 0 评论 -
Spring中使用事务失效的场景
文章目录抛出检查异常导致事务不能正确回滚业务方法内自己 try-catch 异常导致事务不能正确回滚aop 切面顺序导致导致事务不能正确回滚非 public 方法导致的事务失效父子容器导致的事务失效调用本类方法导致传播行为失效@Transactional 没有保证原子行为@Transactional 方法导致的 synchronized 失效抛出检查异常导致事务不能正确回滚@Servicepublic class Service1 { @Autowired private Acco.原创 2022-02-07 23:30:00 · 412 阅读 · 0 评论 -
springboot基于栈结构实现数据源切换
先说问题先说下网上有很多文章写很多demo,参考博客:https://blog.csdn.net/zl_momomo/article/details/82851134,下面是核心代码:首先定义一个ThrealLocal String类型来存储数据源做一个切面,设置这个数据源,方法执行完,把ThreadLocal给清理掉。spring 从当前ThreadLocal获取数据源这个可以满足我们大多数场景,来看一个问题:思考下C方法会是哪个数据源?答案是方法c会执行默认数据源,但是问题是.原创 2021-12-29 23:30:00 · 365 阅读 · 0 评论 -
Spring 之 @Autowired 的理解
前言在了解@Autowired之前,需要知道先提出几个问题:1、InstantiationAwareBeanPostProcessor 这个接口是干嘛的,字面上理解是感知Bean实例话的处理器,这篇请看Spring之InstantiationAwareBeanPostProcessor 理解2、什么是依赖注入?依赖注入:Dependency Injection,简称DI,说白了就是利用反射机制为类的属性赋值的操作。3、什么是注入,注到哪里?注入就是为某个对象的外部资源赋值,注入某个对象所需要的.原创 2021-11-23 22:15:00 · 895 阅读 · 0 评论 -
SpringBoot属性绑定Environment和Binder
helloWorld: properties: spring: json: trusted: packages: '*' type: mapping: fast.cloud.nacos.fastbootkafka.domain.TopicATest:fast.cloud.nacos.fastbootkafka.dom.原创 2021-11-15 11:47:48 · 975 阅读 · 0 评论 -
基于Spring扩展点服务调用预热
背景Spring Cloud 服务默认在web server(如tomcat embedded sever)启动后立即进行服务注册,接入流量。启动后初始的服务请求执行较慢,体现在Cat Url监控上,可达到数秒,造成服务消费者超时出错或其它问题。造成服务启动慢请求的原因多样,常见有FeignClient初始化,缓存加载等,逐个点优化不具备普遍性。并且Spring Cloud大量使用第3方开源组件,在不改变源码的情况下,优化启动性能比较困难。如:FeignClient/RibbonClient:测试原创 2021-08-20 16:04:54 · 648 阅读 · 0 评论 -
Spring中event事件执行顺序
前言我们自定义监听spring event通常有两种方式,先说下这两种方式,然后从两种方式的差异说明event的顺序。@Component 实现使用@Component方式实现如下:@Component@Slf4jpublic class ApplicationListenerImpl implements ApplicationListener<ApplicationEvent> { public ApplicationListenerImpl() { .原创 2021-08-19 11:33:44 · 2793 阅读 · 0 评论 -
Springboot @ConditionOnXXX是如何实现的
前言问题主要是发现了一个问题,在看springboot 源码的时候。这种飘红的代码就没有这个类,但项目依然可以启动起来。为什么?先看下@ConditionalOnClass@ConditionalOnClass这个注解有一个基础注解@Conditional,还可以看到一个OnClassCondition.class,这个属性是一个数组。Conditional这个接口,SpringBootCondition就实现了这个接口来对Contional注解进行处理下面是这几个核心类的关系.原创 2021-08-18 14:05:56 · 444 阅读 · 0 评论 -
Spring Bean 生命周期整理
主要流程各种接口方法分类Bean的完整生命周期经历了各种方法调用,这些方法可以划分为以下几类:Bean自身的方法这个包括了Bean本身调用的方法和通过配置文件中<bean>的init-method和destroy-method指定的方法Bean级生命周期接口方法:这个包括了BeanNameAware、BeanFactoryAware、InitializingBean和DiposableBean这些接口的方法容器级生命周期接口方法:这个包括了InstantiationA.原创 2021-08-17 10:20:38 · 136 阅读 · 0 评论 -
guava 如何快速切换到 caffeine
前言首先看一个spring官方的issue,https://github.com/spring-projects/spring-framework/issues/18370Caffeine intends to supersede the caching support in the Google Guava library with an actively maintained Java 8+ version in standalone form.We’re going to introduce.原创 2020-06-20 14:34:16 · 409 阅读 · 0 评论 -
自定义实现spring cache 整合 guava 、 redis 两级缓存
参考链接spring boot + spring cache 实现两级缓存(redis + caffeine原创 2020-06-19 09:31:34 · 1353 阅读 · 2 评论 -
浅析Spring事务传播机制
文章目录基本概念案例分析案例一:常规情况案例二:try-required案例三:try-requiresNew案例四:常规情况解密案例一案例二案例三案例四原理踩坑基本概念Spring的事务传播机制有以下七种PROPAGATION_REQUIRED:Spring的默认传播级别,如果上下文中存在事务则加入当前事务,如果不存在事务则新建事务执行。PROPAGATION_SUPPORTS:...原创 2020-03-26 14:41:48 · 231 阅读 · 0 评论 -
浅谈spring的生命周期
文章目录前言生命周期前言对于一个长期的spring使用者来说,对于spring 的生命周期不是很了解,所以趁着这个疫情比较严重的时候,在家静下心来,看一下这个很久困在心中的一个问题。生命周期它大致分为Bean 定义、Bean 的初始化、Bean 的生存期和Bean的销毁4 个部分。其中Bean 定义过程大致如下:Spring 通过我们的配置,如@ComponentScan定义的扫描路...原创 2020-01-31 14:02:23 · 6929 阅读 · 0 评论 -
【Spring Security】Spring Security Oauth2登陆提供Controller接口
上次分享到如何使用postman实现账号密码登陆,显然很复杂,传到的参数太多,一般我们只需要传两个参数即可,即 username和password这样就行了,况且以后做网关的话,也会分流到这个接口,于是这样的接口的开发势在必得。1. 代码实现1.1 创建请求类三个参数,用户名,密码,验证码。@Data@ToStringpublic class LoginRequest { S...原创 2019-12-23 16:22:10 · 1926 阅读 · 0 评论 -
【Spring Security】Spring Security Oauth2密码模式授权
密码模式(Resource Owner Password Credentials)与授权码模式的区别是申请令牌不再使用授权码,而是直接通过用户名和密码即可申请令牌。github:https://github.com/fafeidou/fast-cloud-nacos/blob/master/fast-cloud-nacos-examples/spring-security-examples/p...原创 2019-12-23 11:24:13 · 591 阅读 · 0 评论 -
【Spring Security】Spring Security 解决swagger无法访问
由于加上了security,访问swagger就会出现下面这个问题,这是由于对每个到达系统的http请求链接进行校验,有的连接需要暴露出来1.解决方法1.1 排除拦截将swagger的访问路径,给排除掉,这样就解决了。@Configuration@EnableResourceServer@EnableGlobalMethodSecurity(prePostEnabled = true...原创 2019-12-14 18:09:01 · 11548 阅读 · 2 评论 -
【Spring Security】Spring Security 与 OAuth2 之资源服务授权
1.资源服务授权1.1资源服务授权流程资源服务拥有要访问的受保护资源,客户端携带令牌访问资源服务,如果令牌合法则可成功访问资源服务中的资源,如下图:上图的业务流程如下:客户端请求认证服务申请令牌认证服务生成令牌认证服务采用非对称加密算法,使用私钥生成令牌。客户端携带令牌访问资源服务客户端在Http header 中添Authorization:Bearer 令牌。资源服务请求...原创 2019-12-14 17:08:53 · 224 阅读 · 0 评论 -
【Spring Security】Spring Security 与 OAuth2 之授权码模式
1.Oauth2认证1.1 Oauth2认证流程第三方认证技术方案最主要是解决认证协议的通用标准 问题,因为要实现 跨系统认证,各系统之间要遵循一定的接口协议。OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP、Ja...原创 2019-12-14 14:30:05 · 842 阅读 · 0 评论 -
【Spring Security】spring security 之初探jwt
初探jwtSpring Security 提供对JWT的支持,我们使用Spring Security 提供的JwtHelper来创建JWT令牌,校验JWT令牌等操作1.1生成私钥和公钥JWT令牌生成采用非对称加密算法生成密钥证书下边命令生成密钥证书,采用RSA 算法每个证书包含公钥和私钥keytool -genkeypair -alias batman -keyalg RSA ...原创 2019-12-12 14:38:18 · 400 阅读 · 2 评论 -
【Spring Security】spring security 之 BCryptPasswordEncoder
BCryptPasswordEncoder加密BCryptPasswordEncoder encode = new BCryptPasswordEncoder();encode.encode(password);比较 需要通过自带的方法 matches 将未经过加密的密码和已经过加密的密码传进去进行判断,返回布尔值。matches(CharSequence rawPasswo...原创 2019-12-11 18:24:02 · 294 阅读 · 0 评论 -
springboot2.1 实现swagger自动化配置
spring-boot-starter-swaggerswagger自动多模块配置当我们构建分布式系统的时候,虽然我们可以用Swagger来方便为每个服务自动产出API文档页面。但是随着服务数量的增多,内部服务间的依赖关系的复杂度增加,每个服务开发人员要关心和查阅的文档变得越来越多。由于每个服务的文档地址可能都不一样,这使得不得不维护一个文档的索引来方便查阅,并且这个索引还需要不断的去维护...原创 2019-11-02 14:28:58 · 1192 阅读 · 0 评论 -
springboot 整合 pagehelper + tk-mybatis 多数据源问题
闲暇之余,写点最近的收获,写一点心得,便于以后参考方便,另外可以帮助有这样需求的人少走弯路。 整合多个数据源,很多博客会提到springboot整合jdbcTemplete为例子,网上有很多,今天主要推荐的是整合 pagehelper + tk-mybatis 多数据源问题。 其实很简单,我的整合思路分为以下几个步骤。 ...原创 2018-05-25 23:17:11 · 3800 阅读 · 5 评论