Spring
文章平均质量分 86
无心六神通
金融科技系统架构师
展开
-
Spring-Bean-三级缓存-前置aop-后置Aop-类图
原创 2024-03-24 21:42:09 · 225 阅读 · 0 评论 -
Spring-源码-bean-提前AOP-类图
Spring 提供了提前Aop的扩展机制,但是一般情况下不会发生。原创 2024-02-24 15:37:41 · 367 阅读 · 0 评论 -
Spring-Boot-实现一个自定义的@Autowired(应用篇)
参照@Autowired的定义,实现一个自定义的注解(缩减版)实现,在bean初始化之后,扫描,为了做一个区分,下面创建一个代理类,注入依赖@Component@OverrideClass<?// 创建代理类,在具体方法执行前后输出一个日志@Overridetry {@Override});原创 2024-02-17 12:49:27 · 724 阅读 · 0 评论 -
Spring-Boot-如何指定bean最先加载(应用篇)
在日常的业务开发中,绝大多数我们都是不关注bean的加载顺序,然而如果在某些场景下,当我们希望某个bean优于其他的bean被实例化时,往往并没有我们想象中的那么简单。原创 2024-02-17 12:48:19 · 1564 阅读 · 0 评论 -
Spring-Boot-从0到1实现一个自定义Bean注册器(应用篇)
虽然我们的目标比较清晰,但是突然让我们来实现这么个东西,还真有点手足无措,应该从哪里下手呢?类似@Component注解的功能,我们弄简单一点即可。原创 2024-02-17 12:46:53 · 1154 阅读 · 0 评论 -
Spring-Boot-FactoryBean及代理实现SPI机制的实例(应用篇)
https://blog.hhui.top/hexblog/2017/05/26/SPI框架实现之旅一:背景介绍/open in new windowSPI的全名为Service Provider Interface,简单的总结下java spi机制的思想。我们系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块、jdbc模块的方案等。面向的对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。原创 2024-02-17 12:45:11 · 963 阅读 · 0 评论 -
Spring-Boot-Bean之注销与动态注册实现服务mock(应用篇)
前面一篇博文介绍了动态注册Bean的姿势,看完之后难免会有个疑问,在我n年的业务开发中,还真没遇到过需要自己来注册bean的场景(常年的if-else, curd还真不可能遇到)那么这个东西到底有什么用,或者可以给我们打开哪些思路呢?本篇博文将以应用的角度,简单的演示一下可以怎么用。原创 2024-02-17 12:43:13 · 902 阅读 · 0 评论 -
Spring-Boot-日志管理之logback配置文件
SpringBoot默认选用logback进行日志管理,前一篇讲述了默认配置日志的参数,然而这些内容比较初级,并不一定能满足我们更加特殊的需求(比如输出到多个不同的配置文件,不同的包路劲选择不同的输出方式等)所以本篇的内容,主要介绍logback.xml配置文件的语法,虽然与SpringBoot本身没有太多的关联性,但在SpringBoot项目中却非常实用。原创 2024-02-17 12:42:10 · 1202 阅读 · 0 评论 -
Spring-Boot-日志管理之默认配置
对于一个后端来说,日志是不可缺少的,这个东西,形象点就像剑客手中的剑,没有剑你就刷不了帅,砍不了人。所以就有必要好好的说道说道,这个日志文件的管理了。本篇博文将关注以下几点内容。原创 2024-02-17 12:41:19 · 1039 阅读 · 0 评论 -
Spring-Boot-实现一个简单的分布式定时任务(应用篇)
在SpringBoot中,想使用定时器比较简单,一个注解@Scheduled配合上cron表达式即可支持各种定时任务了;单机任务还是比较简单的,但是当我们的服务有多个实例在运行时,如果只希望一个实例上的定时任务执行,可以怎么出了呢?原创 2024-02-17 12:39:46 · 1192 阅读 · 0 评论 -
Spring-Boot-国际化支持实例开发
国际化的支持,对于app开发的小伙伴来说应该比价常见了;作为java后端的小伙伴,一般来讲接触国际化的机会不太多,毕竟业务开展到海外的企业并没有太多SpringBoot提供了国际化的支持,网上也有相关的教程,然而实际体验的时候,发现并没有预期的那么顺利;本文将介绍一下SpringBoot如何支持国家化,以及在支持的过程中,一些注意事项。原创 2024-02-17 12:37:52 · 916 阅读 · 0 评论 -
Spring-Boot-内存缓存Caffiene自定义CacheManager
上一篇介绍了Caffiene整合Spring的缓存注解@Cacheable,在这篇示例中,所有的缓存公用,但是实际的场景中,我们可能会更希望针对不同的场景,配置不同的缓存(比如我的关键数据,虽然访问频率可能没那么高,但是每次实际读取的成本很高,又不怎么变动,我希望可以更长久的缓存;不希望这些数据因为缓存的淘汰策略被其他的热点数据给淘汰掉),那么可以怎么处理呢?接下来我们来看一下两种不同的方式,来实现上面的诉求。原创 2024-02-17 12:33:53 · 2133 阅读 · 0 评论 -
Spring-Boot-内存Caffeine整合Cachebale注解
前面一片文章虽说介绍了Caffeine的使用方式,但是更多的是偏向于基础的Caffeine用法;接下来这边博文将给大家介绍一下Caffeine结合Spring的@Cacheable注解,来实现内部缓存的使用姿势。原创 2024-02-17 12:32:27 · 1187 阅读 · 0 评论 -
Spring-Boot-事件机制的两种消费姿势
借助Spring可以非常简单的实现事件监听机制,本文简单介绍下面向接口与注解监听的两种姿势。原创 2024-02-17 12:28:05 · 364 阅读 · 0 评论 -
Spring-Boot-SpEL语法扫盲与查询手册
Spring表达式语言简称为SpEL,一种类似Ognl的对象图导航语言(对于ognl不熟悉的同学可以参考一下:SeEL为Spring提供了丰富的想象空间,除了一些基本的表达式操作之外,还支持。原创 2024-02-17 12:26:55 · 942 阅读 · 0 评论 -
Spring-Boot-SpringContext.getBean()方法调用导致NPE?
在实际的业务开发中,为了方便获取Spring容器中的Bean对象,一个常见的case就是创建一个SpringUtil类,内部持有SpringContext上下文,然后提供一个静态的方式获取bean对象,然而这种使用姿势,一个不小心可能导致npe今天我们来看一下这个场景。原创 2024-02-16 13:36:01 · 999 阅读 · 0 评论 -
Spring-Boot-自动配置选择生效
写了这么久的Spring系列博文,发现了一个问题,之前所有的文章都是围绕的让一个东西生效;那么有没有反其道而行之的呢?我们知道可以通过来决定一个配置类是否可以加载,那么假设有这么个应用场景针对上面的case,当然也可以使用来实现,除此之外推荐一种更优雅的选择注入方式。原创 2024-02-16 13:34:33 · 792 阅读 · 0 评论 -
Spring-Boot-指定Bean初始化顺序的若干姿势
上一篇博文介绍了@Order注解的常见错误理解,它并不能指定bean的加载顺序,那么问题来了,如果我需要指定bean的加载顺序,那应该怎么办呢?本文将介绍几种可行的方式来控制bean之间的加载顺序。原创 2024-02-16 13:33:12 · 966 阅读 · 0 评论 -
Spring-Boot-Bean加载顺序之错误使用姿势辟谣
在网上查询Bean的加载顺序时,看到了大量的文章中使用@Order注解的方式来控制bean的加载顺序,不知道写这些的博文的同学自己有没有实际的验证过,本文希望通过指出这些错误的使用姿势,让观文的小伙伴可以知道@Order的具体的应用场景。原创 2024-02-16 13:25:47 · 843 阅读 · 0 评论 -
Spring-Boot-多实例选择
当通过接口的方式注入Bean时,如果有多个子类的bean存在时,具体哪个bean会被注入呢?系统中能否存在两个重名的bean呢?如果可以,那么怎么选择引入呢?如果不行的话又该怎么避免上面的问题呢?原创 2024-02-16 13:23:09 · 1008 阅读 · 0 评论 -
Spring-Boot-条件注入@ConditionalOnProperty
bean的条件注入,除了前面两篇博文分别介绍的通过注解配合Condition接口的基本实现,以及如何使用条件注解和本文将主要介绍根据配置来决定是否创建bean的注解。原创 2024-02-16 13:22:01 · 1221 阅读 · 0 评论 -
Spring-Boot-条件注入@ConditionalOnExpression
bean的条件注入,除了前面几篇博文分别介绍的通过注解配合Condition接口的基本实现,以及如何使用条件注解和和基于配置的本文介绍的注解将更加的灵活,基于SPEL表达式的条件注解。原创 2024-02-16 13:20:51 · 1501 阅读 · 0 评论 -
Spring-Boot-@ConditionalOnBean与@ConditionalOnClass
/ bean类型Class<?// bean类型// 要求bean上拥有指定的注解Class<?Class<?Class<?/***/原创 2024-02-16 13:19:25 · 1453 阅读 · 0 评论 -
Spring-Boot-条件注入@Condition使用姿势
注解定义如下,其内部主要就是利用了Condition接口,来判断是否满足条件,从而决定是否需要加载BeanClass原创 2024-02-16 13:10:49 · 1117 阅读 · 0 评论 -
Spring-Boot-Bean之动态注册
Spring中的Bean除了前面提到的几种JavaConfig或者@Component等注解标识之外,也是可以动态的向Spring容器注册的,本篇博文将主要介绍。原创 2024-02-16 13:07:34 · 1705 阅读 · 0 评论 -
Spring-Boot-Bean之自动加载
直接在Config配置中,定义Bean,可以说是更加常见的方式,特别是当你的bean不是那么多的时候,推荐使用这种方式,便于集中管理@Slf4j对应的配置类@Bean。原创 2024-02-16 13:04:01 · 902 阅读 · 0 评论 -
Spring-Boot-Bean之基本定义与使用
这种方式,主要是结合来定义bean,首先是声明一个配置类,然后再配置类中,通过返回bean对象的方法形式来声明bean,一般使用姿势如下@Data@Bean需要说明的一点是BeanLoadConfig类本身也被Spring容器看为一个Bean。原创 2024-02-16 13:02:51 · 1050 阅读 · 0 评论 -
Spring-Boot-AOP-SpEL-实现日志输出的注意事项
使用AOP来打印日志大家一把都很熟悉了,最近在使用的过程中,发现了几个有意思的问题,一个是SpEL的解析,一个是参数的JSON格式输出。原创 2024-02-15 11:37:36 · 1018 阅读 · 0 评论 -
Spring-Boot-接口上注解AOP拦截不到场景兼容
虽说是自定义,但也没有要求我们直接实现这个接口,我们选择来补全逻辑@Override// 直接使用spring工具包,来获取method上的注解(会找父类上的注解)接下来我们采用声明式来实现切面逻辑这个advice就是我们需要执行的切面逻辑,和上面的日志输出差不多,区别在于参数不同自定义advice实现自接口,顶层接口是Advice@Overridetry {return res;throw e;// 目标对象// 执行的方法// 请求参数。原创 2024-02-15 11:36:07 · 987 阅读 · 0 评论 -
Spring-Boot-AOP-实现一个日志插件-应用实践
前面针对AOP的使用姿势和一些疑问进行了说明,这一篇则从应用的角度出发,看下AOP可以实现些什么样的效果。原创 2024-02-15 11:34:05 · 383 阅读 · 0 评论 -
Spring-Boot-AOP-拦截优先级-详解
前面两篇分别介绍了AOP的基本使用姿势和一些高级特性,当时还遗留了一个问题没有说明,即不同的advice,拦截同一个目标方法时,优先级是怎样的,本篇博文将进行详细分析。原创 2024-02-15 11:33:06 · 1201 阅读 · 0 评论 -
Spring-Boot-AOP-高级使用
前面一篇博文介绍了aop的简单使用方式,在文章最后,抛出了几个问题待解决,本篇博文则将针对前面的问题,看下更多关于AOP的使用说明。原创 2024-02-15 11:28:46 · 728 阅读 · 0 评论 -
Spring-AOP-基本使用
一般来讲,谈到Spring的特性,绕不过去的就是DI(依赖注入)和AOP(切面),在将bean的系列中,说了DI的多种使用姿势;接下来看一下AOP的玩法。原创 2024-02-15 11:27:56 · 874 阅读 · 0 评论 -
Spring-Boot-从零开始-配置动态刷新-详细解析与实践
自定义一个配置源,我们直接基于内存的来进行模拟,内部提供了一个配置更新的方法,当配置刷新之后,还会对外广播一个配置变更事件// 将内存的配置信息设置为最高优先级cache.put("config.wechat", "一灰灰blog");/*** 更新配置*//*** 主要实现配置变更事件发布于监听*/@Component@Override@Getter接下来就需要将这个自定义的配置元,注册到上下文,在这里我们可以借助。原创 2024-02-15 10:44:51 · 2446 阅读 · 0 评论 -
Spring-Boot-自定义属性-配置绑定-极简实现
Component@Override@OverrideconfigCache.put("config.wechat", "一灰灰blog");// 将内存的配置信息设置为最高优先级注意上面的实现,这里是自定义的配置源 propertySources 中包含了environment的配置信息;如果希望将自定义的配置信息源注入到environment,可以如下实现。原创 2024-02-15 10:38:36 · 865 阅读 · 0 评论 -
Spring-Boot-编程式-属性绑定-Binder
SpringBoot中极大的简化了项目中对于属性配置的加载方式,可以简单的通过@Value来实现属性配置与Java POJO对象、Bean的成员变量的绑定,那如果出现一个某些场景,需要我们手动的、通过编程式的方式,将属性配置与给定的pojo对象进行绑定,我们又应该怎么实现呢?原创 2024-02-15 10:37:14 · 1166 阅读 · 0 评论 -
Spring-Boot-基于maven-多环境配置
实际开发过程中,配置的多环境区分属于标配了,当我们不考虑配置中心时,将多环境的配置就放在项目的resource目录下,那么可以怎样做多环境的配置管理呢?之前介绍过一篇基于配置来选择对应的配置文件的方式,有了解这个配置的小伙伴可以很快找到这种方式的特点如配置值为dev,则加载配置文件,如果为prod,则加载那么缺点就很明显了,当我每个环境的配置很多时,上面这种方式真的好用么?接下来本文介绍另外一种常见的基于maven的多环境配置方式。原创 2024-02-15 10:00:36 · 877 阅读 · 0 评论 -
Spring-Boot-@Value注解-配置自动刷-能力扩展
要支持配合的动态刷新,重点在于下面两点如何修改中的配置源配置变更之后,如何通知到相关的类同步更新。原创 2024-02-14 16:24:33 · 846 阅读 · 0 评论 -
Spring-Boot-@Value之字面量-SpEL知识点-介绍篇
承接上一篇博文中提及到但没有细说的知识点,这一篇博文将来看一下@Value除了绑定配置文件中的属性配置之外,另外支持的两种姿势。原创 2024-02-14 16:23:21 · 983 阅读 · 0 评论 -
Spring-Boot-自定义配置源-使用姿势
Value修饰的成员,绑定配置时,是从中读取配置的,所以我们需要做的就是注册一个自定义的配置源,借助可以来实现我们需求场景演示一个最简单自定义的配置数据源,重写的方法实现如下/*** 覆盖这个方法,适用于实时获取配置* @return*/@Override// 注意,只针对自定义开头的配置才执行这个逻辑上面这个可能有点过于儿戏了,接下来我们将配置源放在自定义的文件中,并支持文件配置修改// 这种方式,适用于一次捞取所有的配置,然后从内存中查询对应的配置,提高服务性能。原创 2024-02-14 16:22:00 · 1103 阅读 · 0 评论