Spring
文章平均质量分 88
Ch.yang
try{ coding } catch { bug }
展开
-
【Spring】通过Spring收集自定义注解标识的方法
需求:用key找到对应的方法实现。使用注解的形式增量开发。任意时刻都能通过key来进行依赖查找@TestAssert.notNull(myBeanFactory.getMethod("key1"), "key1对应的方法不能为空");声明自己的类注解,并要求被 Spring 收集声明自己的方法注解,确保可以通过反射获取借 Spring 的能力,容器启动收集bean完成后,把bean列表交给自己,用于自己的收集策略。原创 2024-03-31 20:13:31 · 512 阅读 · 1 评论 -
【Apollo】阿波罗使用占位符 #{} 的异常分析
出于线上 hotfix 报文请求模板的考虑,新增一个阿波罗配置,取值形如:重启后服务宕机,影响较大。现本地复现一下这个异常,并加以分析。原创 2024-01-07 18:01:12 · 1037 阅读 · 0 评论 -
【笔记】Spring Boot 历史官方文档学习(持续更新)
Spring Boot 2014正式发布1.0版本,距今已经快10年了。看历史官方文档了解重点feature, 帮助自己建立知识网络。与Spring 5 官网历史文档学习一样,尽量保证不误解文档作者的原意,不好翻译的会有原文摘录(包括一些专有名词),并辅以自己的理解。限于篇幅原因,只摘录工作中遇到过的或者是有兴趣的。原创 2023-09-05 21:51:00 · 466 阅读 · 0 评论 -
【Mockito】@Mock 和 @MockBean 的区别与 @MockBean 的使用时机
由于历史原因,@Mock 和 @MockBean 都会出现在项目代码里,这里记录下具体的区别。并突出 @MockBean 在 Spring Boot 中的使用时机stackoverflow原文。原创 2023-07-03 22:38:45 · 1544 阅读 · 0 评论 -
【Spring MVC】获取 @RequsetBody 标识的对象,使用适配器模式增加代码可读性
思考用 AOP 把校验代码实践用 Spring MVC 的 RequestBodyAdvice 做AOP逻辑继承 RequestBodyAdviceAdapter 实现自己的 适配器用自己的适配器让代码可读性增加熟悉 Spring MVC 、Java 反射的一些实践本文内容澄清一个AOP校验JSON内容的思路复习适配器模式。原创 2023-06-19 23:06:03 · 1904 阅读 · 0 评论 -
【Spring】Spring @Cacheable 官方学习及demo
Spring 有很多声明式的编程风格,@Transactional 是,@Cacheable 也是。说起 @Transactional,复杂的事务情况下,这个注解也有局限,需要用到编程式的事务完成需求。同样地,@Cacheable 也是适合简单的缓存场景。原创 2022-12-29 22:25:47 · 427 阅读 · 0 评论 -
【Log4j2】开发环境配置日志策略打印完整MyBatis语句到文件
公司项目用的 Spring Boot,选用的是 Log4j2 作为日志实现,本地开发的时候没有把sql语句打印到文件中,并且控制台输出的sql需要自己拼接,看了log4j2官网后整理了个日志文件demo实现自己的需求。Logback作为 Spring Boot自动装配的默认实现,所以选用Log4j2 记得要排除掉默认依赖。原创 2022-11-17 21:42:56 · 2061 阅读 · 0 评论 -
【Logback】开发环境怎么组织xml文件构建日志策略
思路:官网学习,官网有大量的配置例子,并且都会给出解释需要前置知识:了解 Spring Boot 的依赖结构、门面模式最好了解:Spring MVC 的工作原理,可以类比理解slf4j学习demo放到文末了(github)原创 2022-11-13 11:55:35 · 364 阅读 · 0 评论 -
【架构】评分较高的三本微服务书籍的阅读笔记
凤凰架构》《微服务设计模式》《微服务实战(第二版)》《数据密集型应用系统设计》《网络是怎样连接的》《计算机网络》从宏观上看,微服务都是重构出来的,所有作者都不建议一上来就把项目搭建成微服务。这种基于重构来搭建微服务的指导思想是要明确知道微服务解决单体的缺点时,同时也引入了风险和挑战,当微服务的风险和挑战大于单体架构时请谨慎。当微服务的收益大于单体架构时,需要遵循一些设计原则甚至是必备的组件。。............原创 2022-07-23 17:10:56 · 2129 阅读 · 0 评论 -
【Spring Boot】spring-boot-starter-web 如何完成自动装配
参考官网:理解能够自动装配的bean一个最简单的 项目启动 —— 自然退出,“啥也不干”每次运行项目都执行 避免 有旧依赖引入的类3. 找到 的类pom文件声明为web项目3.1. 怎么找? 那么就找到 模块下的 包。找一个的子包下的任意一个类。现在取当pom.xml引入以下依赖启动时满足装配要求,实现装配。通过引入依赖就让项目拥有监听端口的能力(变成web)项目,这个特性就是自动装配。借官网的片段,总结下其他要注意的规范:.........原创 2022-07-10 00:56:16 · 753 阅读 · 0 评论 -
【Docker】Maven集成Docker插件后的命令行笔记
整理至《Spring 微服务实战(第二版)》分类命令行以 打头的属于原生docker支持命令行以 打头的属于maven 集成 docker 后的打包能力,其中还需要docker的规范支持运行docker镜像随笔 的好处:原创 2022-07-06 16:36:11 · 412 阅读 · 0 评论 -
【Spring】借Spring MVC实现透明鉴权
开发业务代码的时候,不用关心请求自己接口的用户是否合法。鉴权的工作交给架构中的公共代码,自己仅专心于业务实现。1.2. 有什么好处?践行 “单一职责” 原则。鉴权与授权都应该是安全模块的内容,当单体架构膨胀到一定程度后,考虑重构为微服务时,安全模块可拔插的特点就有优势了。细粒度控制依旧在业务层EG: 删除客户资源,要取登录人的信息确保是本人删除 的技术抉择EG: 用来存储上下文中用户实体,避免User参数层层传递,但是在线程池环境下,很容易出问题。 默认隔离,要修改成才能避免 污染。授权与鉴权原创 2022-07-04 17:37:51 · 357 阅读 · 0 评论 -
【高并发基础】Spring 事务传播级别及造成死锁的隐患分析
本项目聚焦高并发的基础知识,至底向上得研究:github 仓库 (分支 master / isolation / propagation / multithreading)理念:事务传播行为官网描述用于区分声明式事务catch到异常由框架回滚,本文的“回滚”用到编程式事务的API 支持主动回滚。编程式事务官网描述讨论的模型是 调用方(外层) -> 被调用方(内层)默认传播行为, 确保当前方法一定处于事务保护中用于减少事务的粒度,如果不是关键的业务逻辑或是运行出错的逻辑,可以用 声明与调用方事务隔离。原创 2022-06-26 13:12:25 · 1966 阅读 · 0 评论 -
【Spring】著作阅读笔记——Spring MVC核心技术
《Spring 揭秘》是一本09年出版的书,当时还在流行,作者大胆预言有着更广阔的发展前途,并且建议新的项目采用进行开发。现在回过头来看,当年的之于就如现今的 之于 。当年作者熟练掌握了才悟得的好,那么如今在进入的探索前,还需要夯实的基础。短时间内还是很能打的,看完书后,慢慢能体会其架构上的设计哲学。框架上使用的设计模式,虽简洁但有效。 有着三个角色保存Spring IOC中注册的 和 客户端请求的映射关系,一般的key为url, 编程中这个key常常使用 进行声明 的包装类。看到了包装逻辑有A原创 2022-02-17 20:20:58 · 396 阅读 · 0 评论 -
【微服务】maven聚合及继承关系在spring cloud项目中的原理及应用
1. 前言1.1 maven官网1.2 本文需要解释清楚的知识点maven的聚合和继承是两个不同的特性(官网的说法),看懂spring cloud项目需要同时掌握聚合和继承的概念与设计模式中的基本概念一脉相承,以下用java类比弄清楚 <dependencyManagement>中的 <dependencies> 和 普通 <dependencies> 的区别1.3 需要的前置知识了解maven 的独立安装及配置了解maven 生命周期了解mave原创 2022-01-12 20:57:04 · 1115 阅读 · 0 评论 -
【Spring】著作阅读笔记——IOC思想及工厂模式
前言琢磨了一段时间整合Spring Security ,及Spring Security的使用,处于能搭出来却毫无安全感的情况。归根到底还是对spring 框架的核心思想缺乏体系化的理解。在豆瓣书籍中找到了评分高达9.1的《spring揭秘》,这本书09年出版,现已绝版,用到的spring 版本最多仅到2.5,虽然时间久远,但是Spring Security彼时已经在spring大家族中。如果用发展的眼光理解框架,我认为无论是spring boot的自动装配还是spring cloud的整合,了解spri原创 2022-02-03 16:47:53 · 862 阅读 · 0 评论 -
【Spring】著作阅读笔记——ApplicationContext的统一资源管理
前言Spring的出现,把Java net包下的URL的资源类型做了扩展。明确了资源的定位及表示的边界。解耦了资源的定位和表示,以下将整理Spring为统一资源管理做出的努力。(文末给出获取bean的工具类,得益于Spring对资源的重新设计。Java 对URL的狭义解释广义的URL解释 ,大意为:因特网上访问某一资源的唯一标志:形如<方案>:<方案描述部分>,以下都为URL的表示http://www.baidu.comfile://SD/packet.xmlthun原创 2022-02-07 13:51:30 · 476 阅读 · 0 评论 -
【Spring】著作阅读笔记——ORM的诞生及Spring的集成
前言回顾曾经约定俗成的开发规则,DAO模式 —— Oracle 官网介绍的开发标准(浏览即可)什么是JDBCJDBC的缺陷ORM的诞生Spring集成ORM做的努力1. JDBC1.1 什么是JDBC以下内容整理至百度JDBC (Java Database Connectivity)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口。JDBC API主要位于JDK中的java.sql包中(之后扩展的内容位于javax.sql包中)具体的规范有:DriverMa原创 2022-02-11 22:42:14 · 758 阅读 · 0 评论 -
【Spring】著作阅读笔记——事务传播行为
前言前段时间整理了数据库事务相关的内容,事务传播行为就是程序对事务的编排。事务传播行为在工作上的使用很重要,曾经在线上环境因为开启了大事务并嵌套小事务造成了死锁问题,现借《Spring 揭秘》整理以下具体知识和使用场景。声明式事务已经非常流行了,在声明的注解上即可指定传播行为。1. 事务为什么会传播?1.1 DAO模式DAO模式的出现,从官网摘了几句话,希望能概括DAO模式具体提供了什么思路:The DAO implements the access mechanism required to原创 2022-02-15 21:23:12 · 340 阅读 · 0 评论 -
【源码】Spring Security 官方文档阅读并查源码解读认证流程
官网及用词说明官网:Spring Security Reference Version 5.2.15.RELEASE用词:开发者 - 项目中的程序员系统用户 - 项目中数据库表中较为复杂的用户框架用户 - Spring Security 框架中中定义的用户1. 获取认证过的用户主体1.1 借 SecurityContextHolder 从线程中获得与程序交互的主体信息 Authentication该类内部组合了一个SecurityContextHolderStrategy 也是就存储上原创 2022-01-22 18:30:24 · 1336 阅读 · 1 评论 -
【Spring】SpringMVC 中 @ControllerAdvice的两种应用
SpringMVC 中 @ControllerAdvice的两种应用1. 异常处理 @ExceptionHandler1.1 全局异常处理@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(value = Exception.class) @ResponseBody pu...原创 2020-02-26 17:03:56 · 278 阅读 · 0 评论 -
【Spring】Filter、Interceptor、Aspect的设计及区别
Filter、Interceptor、Aspect的设计及区别1) Filter定义基于Servlet架构,Spring无法控制,也无法拿到Spring控制的参数public class TimeFilter implements Filter { @Override public void doFilter(ServletRequest request, Se...原创 2020-01-30 23:37:25 · 1357 阅读 · 0 评论 -
【java_基础深入】模板方法设计模式的妙用 : 回调子类实现
模板方法设计模式应用场景HttpServlet 的 service() 就是一个模板方法,它实现了Servlet规范,DispatcherServlet 借助service() 的模板方法,拓展了自己的逻辑。HttpServlet 是一个抽象类。抽象类是实现模板方法的基石,以下先举个简单例子,再从底层证明实例产品线定义:/** * @Author james * @Descript...原创 2019-12-24 22:52:02 · 293 阅读 · 0 评论 -
【java_设计模式】适配器模式、spring相关
学习路径:https://coding.imooc.com/class/270.html前言适配器模式、外观模式、装饰者模式都存在语义上的共同点。装饰者模式和外观模式的区别:https://blog.csdn.net/chenghan_yang/article/details/90577600适配器模式的粒度与外观模式的粒度不同,适配器可以小到适配一个方法,但是外观模式是对子系统之...原创 2019-05-27 18:50:49 · 248 阅读 · 0 评论 -
【Spring】SpringMVC DispatcherServlet 和 Controller的交互
1. MVC架构1.1 FrontController: DispatcherServlet FrontController就是Spring提供的DispatcherServlet , 而不是Spring提供的@Controller,xml配置文件需要指定Tomcat启动时优先加载该Servlet映射路径写/,转发所有请求 <servlet> <ser...原创 2019-12-24 17:28:34 · 2445 阅读 · 1 评论