如何动态刷新Bean的属性?我们都知道,要想实现配置属性的动态刷新,需要在类上加上一个注解RefreshScope重点来了加了RefreshScope注解的Bean,就拿上图中的UserService举例Spring在生成的时候会生成两个UserService的Bean:第一个是UserService的代理动态代理的Bean,后面我称为第一个Bean第二个就是UserService这个Bean,后面我称为第二个Bean当你在其它类中需要注入一个UserService时,真正注入的是第一个Bean,也就是动态代...
2023-11-06 15:08:05 2037浏览 0点赞 0回复 1收藏
大家好,我是三友这篇文章来扒一扒SpringCloud配置中心的核心原理。不知你是否跟我一样,在刚开始使用SpringCloud配置中心的时候也有很多的疑惑:SpringCloud是什么时候去拉取配置中心的?配置中心客户端的配置信息为什么要写在bootstrap文件中?对象中注入的属性是如何动态刷新的?一些开源的配置中心是如何整合SpringCloud的?...本文就通过探讨上述问题来探秘SpringCloud配置中心核心的底层原理。从SpringBoot的启动过程说起...
2023-11-06 15:06:28 2021浏览 0点赞 0回复 1收藏
大家好,我是三友今天咱就不卷技术了,来跟大家伙讲一讲我是如何写一篇技术文的其实这个问题也是之前一个兄弟问我的,我当时只是简单的回答了一下后面想了想,觉得还是值得去好好总结分享一下所以这里我就把这差不多两年写作时间里踩过一些坑和一些经验,总结成了一些小小的心得分享给大家也算为一些想要写技术文的兄弟提供一点小小的帮助整篇文章我会分成写作前、写作中、写作后三个大方面共16个小点来跟大家分享写作前1、选题...
2023-11-06 15:05:46 1856浏览 0点赞 0回复 0收藏
invokeBeanFactoryPostProcessors从这个方法的名字可以看出,是调用BeanFactoryPostProcessor,这个步骤非常重要,而且过程有点绕前置知识:BeanFactoryPostProcessor及其子接口BeanFactoryPostProcessor是一个接口,有一个方法,方法参数就是BeanFactory通过这个方法就可以拿到BeanFactory,然后对BeanFactory做一些自己的调整比如说,你想关闭循环依赖,你就可以实现这个接口,然后进行调整他还有一个子接口BeanDefinitionReg...
2023-11-06 15:05:13 1358浏览 0点赞 0回复 0收藏
大家好,我是三友今天来扒一扒Spring在启动过程中核心的12个步骤之所以来写这篇文章,主要是来填坑的之前在三万字盘点Spring9大核心基础功能这篇文章的末尾中给自己挖了一个坑,提了一嘴有机会要写这么一篇文章但是由于Spring启动过程并不复杂,所以后面就没写了不过,好巧不巧,刚刚好有兄弟来催更了,那么此时这个机会就来了,这篇文章也就有了前言Spring启动时候整个入口是这么一个方法AbstractApplicationContextre...
2023-11-06 15:04:24 2084浏览 0点赞 0回复 1收藏
大家好,我是不才陈某今天这篇文章分享一下微服务架构路线,希望对大家有所帮助我为什么选择微服务架构?众所周知,单体应用程序,由于其种种不足,几乎不支持敏捷方法。如果你想为一个大型或复杂的业务创建一个软件项目,最好从微服务架构开始。微服务架构是一种灵活的架构,可以显著性地提高应用程序灵活性、可扩展性等。微服务架构路线据我了解很多开发者,想知道他们应该如何开始微服务架构旅程,虽然有成千上万的资源可以...
2023-09-14 16:22:10 2300浏览 0点赞 0回复 0收藏
大家好,我是不才陈某前面文章介绍过几款规则引擎,今天介绍一款轻量级规则引擎:aviator,往期介绍如下:规则引擎深度对比,LiteFlowvsDrools!聊聊小而美的规则引擎LiteFlowSpringBoot+规则引擎Droolsaviator本来是一个轻量级、高性能的基于JVM的表达式引擎。不过从5.0.0版本开始,aviator升级成为了aviatorScript,成为一个高性能、轻量级寄宿于JVM(包括Android平台)之上的脚本语言。根据官网的介...
2023-09-14 16:21:37 2028浏览 0点赞 0回复 0收藏
大家好,我是不才陈某做一些C端业务,不可避免的要引入一级缓存来代替数据库的压力并且减少业务响应时间,其实每次引入一个中间件来解决问题的同时,必然会带来很多新的问题需要注意,比如缓存一致性问题。那么其实还会有一些其他问题比如使用Redis作为一级缓存时可能带来的热key、大key等问题,本文我们就热key(hotkey)问题来讨论,如何合理的解决热key问题。背景热key是什么问题,如何导致的?一般来说,我们使用的缓存Redi...
2023-09-14 16:21:05 2040浏览 0点赞 0回复 0收藏
大家好,我是不才陈某,文末留言送书!POJO的定义是无规则简单的对象,在日常的代码分层中pojo会被分为VO、BO、PO、DTOVO(viewobjectvalueobject)表示层对象1、前端展示的数据,在接口数据返回给前端的时候需要转成VO2、个人理解使用场景,接口层服务中,将DTO转成VO,返回给前台B0(bussinesobject)业务层对象1、主要在服务内部使用的业务对象2、可以包含多个对象,可以用于对象的聚合操作3、个人理解使用场景,在服...
2023-09-14 16:20:30 2444浏览 0点赞 0回复 0收藏
大家好,我是不才陈某Arthas是阿里开源的Java诊断工具,相比JDK内置的诊断工具,要更人性化,并且功能强大,可以实现许多问题的一键定位,而且可以一键反编译类查看源码,甚至是直接进行生产代码热修复,实现在一个工具内快速定位和修复问题的一站式服务。今天,我就带你使用Arthas定位一个CPU使用高的问题,系统学习下这个工具的使用。首先,下载并启动Arthas:curlOhttps:alibaba.github.ioarthasarthasboot.jarjavajararthas...
2023-09-14 16:20:00 2272浏览 0点赞 0回复 0收藏
大家好,我是不才陈某在SpringBoot项目直接使用okhttp、httpClient或者RestTemplate发起HTTP请求,既繁琐又不方便统一管理。因此,在这里推荐一个适用于SpringBoot项目的轻量级HTTP客户端框架retrofitspringbootstarter,使用非常简单方便,同时又提供诸多功能增强。适用于retrofit的springbootstarter,支持快速集成和功能增强。SpringBoot3.x项目,请使用retrofitspringbootstarter3.x。SpringBoot1.x2.x项目,请使用...
2023-09-14 16:17:45 2742浏览 0点赞 0回复 0收藏
大家好,我是不才陈某在码猿慢病云管理系统采用的是SpringCloud集成SpringSecurityOAuth2的方式实现认证、鉴权,其中涉及到的一个重要问题则是数据权限的过滤,今天就来介绍一下实现的方案。在之前的文章中曾经介绍过通过自定义的三个注解RequiresLogin、RequiresPermissions、RequiresRoles实现微服务的鉴权其实就是参考SpringSecurity内置的注解实现,有想要了解的请看:3个注解,优雅的实现微服务鉴权在介绍...
2023-09-14 16:17:01 2674浏览 0点赞 0回复 0收藏
大家好,我是不才陈某接口幂等性是指无论调用接口的次数是一次还是多次,对于同一资源的操作都只会产生一次结果。换句话说,多次重复调用相同的接口请求应该具有与单次请求相同的效果,不会导致不一致或副作用的发生。接口想要保证幂等性有很多种方案,这个在知识星球中《我要进大厂》这个专栏中有篇文章详细介绍过:高并发下如何保证接口的幂等性的8种方案但是这不是今天的重点,今天来介绍一下如何通过自定义注解的方...
2023-09-14 16:16:19 2559浏览 0点赞 0回复 0收藏
大家好,我是不才陈某一、MybatisFlex是什么?MybatisFlex是一个优雅的Mybatis增强框架,它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用MybaitsFlex链接任何数据库,其内置的QueryWrapper^亮点帮助我们极大的减少了SQL编写的工作的同时,减少出错的可能性。总而言之,MyBatisFlex能够极大地提高我们的开发效率和开发体验,让我们有更多的时间专注于自己的事情。官网文档:https:mybatisflex.com二、MybatisFlex的...
2023-09-14 16:14:13 2772浏览 0点赞 0回复 0收藏
大家好,我是不才陈某知识星球中的球友问了一个关于websocket的问题,大致如下:简单的概括一下:如果我们的项目是分布式环境,登录的用户被Nginx的反向代理分配到多个不同服务器,那么在其中一个服务器建立了WebSocket连接的用户如何给在另外一个服务器上建立了WebSocket连接的用户发送消息呢?今天就来解答一下球友的问题:其实,要解决这个问题就需要实现分布式WebSocket,而分布式WebSocket一般可以通过以下两种方案来实现...
2023-09-13 15:19:34 2767浏览 0点赞 0回复 0收藏
大家好,我是不才陈某从软件开发早期(1960年代)开始,应对大型软件系统中的复杂性一直是一项令人生畏的任务。多年来为了应对软件系统的复杂性,软件工程师和架构师们做了许多尝试:DavidParnas的模块化和封装(1972),EdsgerW.Dijkstra(1974)的关注点分离以及SOA(1988)他们都是使用分而治之这项成熟的传统技术来应对大型系统的复杂性。自2010年开始,这些技术被证实无法继续应对Web级应用或者现代大型企业级应用的复杂性...
2023-09-13 15:19:00 2157浏览 0点赞 0回复 0收藏
大家好,我是不才陈某在业务开发的时候,经常会遇到某一个接口不能对外暴露,只能内网服务间调用的实际需求。面对这样的情况,我们该如何实现呢?今天,我就来说一下码猿慢病云管理系统中是如何实现的?码猿慢病云管理系统企业级医疗项目正在持续更新,需要订阅的小伙伴可以点链接联系陈某往期文章如下:企业级医疗项目:码猿慢病云管理系统来了!医疗系统的权限就该这样设计,稳!...
2023-09-13 15:18:26 2467浏览 0点赞 0回复 0收藏
大家好,我是不才陈某JWT相信大家都有所了解,一种无状态的认证方式,因为JWT本身就能存储一些非敏感的身份信息,这种方式目前也被广泛使用,在陈某之前的SpringCloudGateway整合SpringSecurityOAuth2中使用的就是JWT。但是JWT虽好,使用过程中还是要依赖缓存,比如退出登录,JWT唯一的失效途径就是等待过期时间失效,因此在退出登录时必须借助外力Redis才能达到效果。这个在之前的文章中也有介绍。既然都要用Redis,为...
2023-09-13 15:17:38 2380浏览 0点赞 0回复 0收藏
大家好,我是不才陈某在我们之前设计的一个供应链系统中,它包含了商品、销售订单、加盟商、门店运营、门店工单等服务,涉及了各种用户角色,比如总部商品管理、总部门店管理、加盟商员工、门店人员等,而且每个部门的角色还会进行细分。而且这个系统中还包含了两个客户端App:一个面向客户,另一个面向公司员工和加盟商。此时,整个供应链系统的架构如下图所示:上图中的网关层主要负责路由、认证、监控、限流熔断等工作。路由...
2023-09-13 15:17:03 1927浏览 0点赞 0回复 0收藏
大家好,我是不才陈某前面一节介绍了码猿慢病云管理系统的多租户架构的设计,相信大家对业务也相对了解了一些,这节就来聊一聊码猿慢病云管理系统中的权限是如何设计的?权限管控可以通俗的理解为权力限制,即不同的人由于拥有不同权力,他所看到的、能使用的可能不一样。对应到一个应用系统,其实就是一个用户可能拥有不同的数据权限(看到的)和操作权限(使用的)。主流的权限模型主要分为以下五种:ACL模...
2023-09-13 15:02:43 2071浏览 0点赞 0回复 0收藏