新来个架构师,用48张图把openfeign原理讲的炉火纯青~~-编程思维

大家好,我是三友~~ 在很久之前,我写过两篇关于OpenFeign和Ribbon这两个SpringCloud核心组件架构原理的文章 但是说实话,从我现在的角度来看,这两篇文章的结构和内容其实还可以更加完善 刚好我最近打算整个SpringCloud各个组件架构原理的小册子 所以趁着这个机会,我就来重新写一下这两篇文章,弥补之前文章的不足 这一篇文章就先来讲一讲OpenFeign的核心架构原理 整篇

[spring6.0源码解析]简述@configuration注解-编程思维

@Configuration 标注在类上,启动 Spring 会自动扫描@Configuration注解的类,将其注册到IOC容器并实例化bean对象。如果在@Configuration注解的类中使用@Bean注解某个类对象的方法,Spring也会自动将注解了@Bean的方法注册到IOC容器,并进行实例化。 注解源码 @Configuration 注解本质上是个 @Component 注解,所以

guava eventbus的具体使用以及源码解析-编程思维

使用Guava EventBus对系统进行异步解耦改造 一、背景 最近在写的项目里,在使用定时器进行自动任务下派时,发现之前写的程序中将包括启动流程、地图更新、发送短信、效能计算等操作全部集成在同一个方法中同步执行,当任务量大时执行效率很低,且”一荣俱荣一损俱损“,即只要有一个操作执行失败,整条任务流程下派失败,可用性低。 为此使用Guava的EventBus组件对该模块代码进行重构,借此机会也

springmvc关于@requestbody加与不加的区别-编程思维

SpringMVC关于@RequestBody加与不加的区别 前两天在做项目的时候遇到了这样一个问题,小组成员为了方便做接口测试,给Controller控制器上加了@RequestBody注解,但是前端请求接口时报错: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-w

[springboot][maven]关于maven pom文件的packaging属性-编程思维

关于maven pom文件的packaging属性 前几天在调试源码运行程序的时候,因为将项目中pom文件的packaging属性用错导致源码包无法引入使用而报Bean注入错误,在此进行总结整理记录。 packaging是maven的pom.xml中的一个标签,用于指定maven项目的输出格式,也就是打包类型,使用方式为: <packaging>pom</packaging&g

[ngbatis源码学习][springboot] applicationcontextinitializer接口类的使用和原理解读-编程思维

ApplicationContextInitializer接口类的使用和原理解读 在看Ngbatis源码的过程中,看到了自定义的ApplicationContextInitializer实现类,对ApplicationContextInitializer接口不是特别的理解,所以趁此机会总结下对其的理解和使用。 1. 作用 ApplicationContextInitializer(系统初始化器

[maven]关于maven的生命周期与命令-编程思维

关于Maven的生命周期与命令 工作的时候对Maven的install和package的使用产生了一些疑问,干脆将Maven的整个生命周期都复习总结一遍。 先看下在IDEA中Maven的生命周期节点: clean clean是清理命令,相当于执行了 mvn clean 命令。 清理当前工程编译后生成的文件,也就是删除整个target目录。 validate 相当于执行了 mvn validat

【进阶篇】java 实际开发中积累的几个小技巧(一)-编程思维

目录前言一、枚举类的注解二、RESTful 接口三、类属性转换四、Stream 流五、判空和断言5.1判空部分5.2断言部分文章小结 前言 笔者目前从事一线 Java 开发今年是第 3 个年头了,从 0-1的 SaaS、PaaS 的项目做过,多租户下定制化开发项目也做过,项目的 PM 也做过... 在实际的开发中积累了一些技巧和经验,包括线上 bug 处理、日常业务开发、团队开发规范等等。现在在

spring声明式事务(@transactional)开发常犯的几个错误及解决办法-编程思维

目前JAVA的微服务项目基本都是SSM结构(即:springCloud +springMVC+Mybatis),而其中Mybatis事务的管理也是交由spring来管理,大部份都是使用声明式事务(@Transactional)来进行事务一致性的管理,然后在实际日常开发过程中,发现很多开发同学都用错了spring声明式事务(@Transactional)或者说使用非常不规范,导致出现各种事务问题。

利用mybatis拦截器实现自定义的id增长器-编程思维

  原生的Mybatis框架是没有ID自增器,但例如国产的Mybatis Plus却是支持,不过,Mybatis Plus却是缺少了自定属性的填充;例如:我们需要自定义填充一些属性,updateDate、createDate等,这时Mybatis Plus自带的ID自增器就无法满足需求;这种时候我们就需要自定义的ID增加器,可以自定义ID增长策略同时还得支持更多的属性自定义扩展,当然,最好能做成

spring中通过变量和import标签来控制加载哪些bean-编程思维

  需求:根据设置变量,来加载某个spring的bean的配置文件,这个配置文件中,有某些使用的bean。在一些情况下,不希望这些bean被初始化和加载进context中,也不需要被外面访问到。   在spring中,我们通过placeholder类可以读取配置文件,里面可以设置参数,而在配置文件或容器中使用他,如我们有一个配置文件common.properties,内容如下: jdbc.ur