在上文Spring Bean注册解析(一)中,我们讲解了Spring在注册Bean之前进行了哪些前期工作,以及Spring是如何存储注册的Bean的,并且详细介绍了Spring是如何解析xml文件的四种基本标签中的import、alias和beans标签的,本文主要讲解Spring是如何解析xml文件中的bean标签。 我们首先还是来看Spring解析四种基本标签的入口,及DefaultBeanDefinitionDocumentReader.parseDefaultElement方法:…
在上文Spring Bean注册解析(一)中,我们讲解了Spring在注册Bean之前进行了哪些前期工作,以及Spring是如何存储注册的Bean的,并且详细介绍了Spring是如何解析xml文件的四种基本标签中的import、alias和beans标签的,本文主要讲解Spring是如何解析xml文件中的bean标签。 我们首先还是来看Spring解析四种基本标签的入口,及DefaultBeanDefinitionDocumentReader.parseDefaultElement方法:…
参考thymleaf官方网址: https://www.thymeleaf.org/ 现在主流的微服务springboot配合H5开发效率极快。也符合现在前后端分离的开发方式。 thymleaf作为页面模板框架,可以更好的处理Controller和html的关系。 具体搭建过程请详见我的博客: https://blog.csdn.net/HaleyLiu123/article/details/80318496?from=singlemessage 源码请详见我的github地址: https://github.co…
spring boot 框架在生产环境使用的有一段时间了,它“约定大于配置”的特性,体现了优雅流畅的开发过程,它的部署启动方式(java -jar xxx.jar)也很优雅。但是我使用的停止应用的方式是 kill -9 进程号,即使写了脚本,还是显得有些粗鲁。这样的应用停止方式,在停止的那一霎那,应用中正在处理的业务逻辑会被中断,导致产生业务异常情形。这种情况如何避免,本文介绍的优雅停机,将完美解决该问题。 00 前言 什么叫优雅停机?简单说就是,在对应用进程发送停止指令之后,能保证正在执行的业务操作不受影响。应用…
前言 今天来一起学习一下Spring Boot中的异常处理,在日常web开发中发生了异常,往往是需要通过一个统一的异常处理来保证客户端能够收到友好的提示。 正文 本篇要点如下 介绍Spring Boot默认的异常处理机制 如何自定义错误页面 通过@ControllerAdvice注解来处理异常 介绍Spring Boot默认的异常处理机制 默认情况下,Spring Boot为两种情况提供了不同的响应方式。 一种是浏览器客户端请求一个不存在的页面或服务端处理发生异常时,一般情况下浏览器默认发送的请求头中Accept:…
一、@PropertySource 1、定义 自定义配置文件名称,多用于配置文件与实体属性映射。 2、使用 上一章节我们介绍了如何从配置文件里获取值,与JavaBean做映射。但是存在的问题是我们是从主配置(application.yml)里读取的。如果全部的配置都写到application里,那就乱套了。所以我们可以按照不同模块自定义不同的配置文件。 2.1、配置 person.properties person.lastName=李四 person.age=25 person.birth=2017/12/15 …
环境: jdk: 8 spring-boot: 2.x 一、问题描述 在spring-boot 项目中使用RestTemplate和AsyncRestTemplate,RestTemplate发送请求时不会出现乱码,但是AsyncRestTemplate会出现乱码情况 二、问题分析 首先想到是加请求头 application/json;charset=utf-8 , RestTemplate没问题,AsyncRestTemplate依旧乱码。 HttpHeaders headers = new HttpHeader…
在做文件上传的时候,考虑到云上存储和本地存储两种方式,本地存储考虑的最后还是不要放在tomcat里面,放在单独的一个磁盘文件夹中,利于维护。 image.png 像访问本地的一个图片文件,如果你不修改任何东西,spring boot 是访问不了的,只需添加一个配置文件 @Configuration public class SourceConfiguration extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(R…
RPC 流程 1、服务调用方(Client)将远程方法的信息(如类名、方法方法名、方法传入的参数)封装为统一的请求体; 2、序列化请求对象,转化为二进制串,方便传输; 3、通过 Client Stub 发送消息到指定的服务提供方; 4、Server Stub 接收来自 Client 的消息; 5、反序列化二进制串,转化为对象,方便使用; 6、根据请求体,执行本地方法; 7、封装方法执行结果为统一的响应体; 8、序列化响应体对象,转化为二进制串; 9、通过 Server Stub 将消息发送给对应的 Client; …