深入Spring Boot
文章平均质量分 93
深入Spring Boot的原理
横云断岭
在国内大型互联网公司负责6K+应用,80K+机器的Spring Boot微服务技术落地,关注开发体验,微服务,APM,应用诊断,dubbo开源。
Github: https://github.com/hengyunabc
展开
-
深入Spring Boot--使用Arthas排查Spring Boot应用404/401问题
背景在Java Web/Spring Boot开发时,很常见的问题是:网页访问404了,为什么访问不到?登陆失败了,请求返回401,到底是哪个Filter拦截了我的请求?碰到这种问题时,通常很头痛,特别是在线上环境时。本文介绍使用Alibaba开源的Java诊断利器Arthas,来快速定位这类Web请求404/401问题。https://github.com/alibaba/ar...原创 2019-01-13 23:19:29 · 4720 阅读 · 1 评论 -
深入Spring Boot:利用Arthas排查NoSuchMethodError
前言有时spring boot应用会遇到java.lang.NoSuchMethodError的问题,下面以具体的demo来说明怎样利用arthas来排查。Demo: https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-NoSuchMethodError在应用的main函数里catch住异常,保证进程不退出很多...原创 2018-11-01 00:21:18 · 2603 阅读 · 1 评论 -
深入Spring Boot:编写兼容Spring Boot1和Spring Boot2的Starter
前言Spring Boot 2正式发布已经有段时间,应用升级之前,starter先要升级,那么如何支持Spring Boot 2?为什么选择starter同时兼容spring boot 1和spring boot 2从用户角度来看如果不在一个starter里兼容,比如用版本号来区分,spring boot 1的用户使用1.*,spring boot 2用户使用2.*,这样用户...原创 2018-07-25 19:05:24 · 1891 阅读 · 0 评论 -
深入Spring Boot:快速集成Dubbo + Hystrix
背景Hystrix 旨在通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以及监控和配置等功能。Dubbo是Alibaba开源的,目前国内最流行的java rpc框架。本文介绍在spring应用里,怎么把Dubbo和Hystrix结合起来使用。https://git...原创 2018-06-14 15:07:31 · 5590 阅读 · 2 评论 -
深入Spring Boot:实现对Fat Jar jsp的支持
spring boot 对于jsp支持的限制对于jsp的支持,Spring Boot官方只支持了war的打包方式,不支持fat jar。参考官方文档: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-web-applications.html#boot-feature...原创 2018-05-16 19:48:13 · 1201 阅读 · 1 评论 -
深入Spring Boot: 怎样排查 java.lang.ArrayStoreException
java.lang.ArrayStoreException 分析这个demo来说明怎样排查一个spring boot 1应用升级到spring boot 2时可能出现的java.lang.ArrayStoreException。demo地址:https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-ArrayStor...原创 2018-03-07 19:12:25 · 24461 阅读 · 4 评论 -
深入Spring Boot:排查@Transactional引起的NullPointerException
写在前面这个demo来说明怎么排查一个@Transactional引起的NullPointerException。https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-Transactional-NullPointerException定位 NullPointerException 的代码Demo是一个简单的spring事原创 2017-12-14 19:37:02 · 4446 阅读 · 3 评论 -
深入Spring Boot:怎样排查 Cannot determine embedded database driver class for database type NONE
写在前面这个demo来说明怎么一步步排查一个常见的spring boot AutoConfiguration的错误。调试排查 Cannot determine embedded database driver class for database type NONE 的错误把工程导入IDE里,直接启动应用,抛出来的异常信息是:Error starting ApplicationContext. T原创 2017-12-09 22:10:19 · 89559 阅读 · 19 评论 -
深入Spring Boot:怎样排查expected single matching bean but found 2的异常
写在前面这个demo来说明怎么排查一个常见的spring expected single matching bean but found 2的异常。https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-expected-single调试排查 expected single matching bean but found 2原创 2017-12-09 22:12:59 · 81589 阅读 · 4 评论 -
深入Spring Boot:Spring Context的继承关系和影响
前言对于一个简单的Spring boot应用,它的spring context是只会有一个。非web spring boot应用,context是AnnotationConfigApplicationContextweb spring boot应用,context是AnnotationConfigEmbeddedWebApplicationContextAnnotationConfigEmbe原创 2017-08-21 20:36:05 · 8075 阅读 · 0 评论 -
深入Spring Boot:ClassLoader的继承关系和影响
前言对spring boot本身启动原理的分析,请参考:http://hengyunabc.github.io/spring-boot-application-start-analysis/Spring boot里的ClassLoader继承关系可以运行下面提供的demo,分别在不同的场景下运行,可以知道不同场景下的Spring boot应用的ClassLoader继承关系。https://gith原创 2017-08-19 16:31:31 · 9778 阅读 · 5 评论 -
深入Spring Boot:那些注入不了的Spring占位符(${}表达式)
Spring里的占位符spring里的占位符通常表现的形式是:<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> <property name="url" value="${jdbc.url}"/></bean>或者@Configuration@Impo原创 2017-07-20 00:54:07 · 15580 阅读 · 0 评论 -
深入JVM分析spring-boot应用hibernate-validator NoClassDefFoundError
问题可重现的Demo代码:demo.zip最近排查一个spring boot应用抛出hibernate.validator NoClassDefFoundError的问题,异常信息如下:Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.eng原创 2017-05-10 01:16:26 · 9527 阅读 · 6 评论 -
spring boot executable jar/war 原理
spring boot executable jar/warspring boot里其实不仅可以直接以 java -jar demo.jar的方式启动,还可以把jar/war变为一个可以执行的脚本来启动,比如./demo.jar。把这个executable jar/war 链接到/etc/init.d下面,还可以变为linux下的一个service。只要在spring boot maven plug原创 2016-04-03 14:24:11 · 12309 阅读 · 1 评论 -
应用内置embeded tomcat,并打包为fat jar的解决方案
需求大量的微服务框架引起了一大波embeded tomcat,executable fat jar的潮流。显然spring boot是最出色的解决方案,但是spring boot有两个不足的地方:不支持配置web.xml文件,对于旧应用迁移不方便一些配置在web.xml里配置起来很直观,放到代码里配置就难搞清楚顺序了。比如一些filter的顺序关系。spring boot的方案依赖spring原创 2016-04-05 23:49:23 · 6967 阅读 · 4 评论 -
spring boot应用启动原理分析
spring boot quick start在spring boot里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启动的,不需要另外配置一个Web Server。如果之前没有使用过spring boot可以通过下面的demo来感受下。 下面以这个工程为例,演示如何启动Spring boot项目:git clone git@github.com:原创 2015-11-30 22:36:38 · 188544 阅读 · 11 评论