![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
文章平均质量分 93
横云断岭
在国内大型互联网公司负责6K+应用,80K+机器的Spring Boot微服务技术落地,关注开发体验,微服务,APM,应用诊断,dubbo开源。
Github: https://github.com/hengyunabc
展开
-
Spring Mobile是如何判断访问设备的类型的
Spring最近换域名了,去转转,发现了一个有意思的项目:spring mobile。http://projects.spring.io/spring-mobile/这个项目有很多实用的功能,如识别访问我们网站的设备是什么类型的(手机,平板,PC),据域名或者url来切换不同访问内容,据不同的访问设备转到不同的view中。识别访问设备类型的核心代码在org.springfr原创 2013-11-17 08:04:23 · 8607 阅读 · 0 评论 -
深入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 · 81451 阅读 · 4 评论 -
深入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 · 89342 阅读 · 19 评论 -
深入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 · 4405 阅读 · 3 评论 -
深入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 · 24439 阅读 · 4 评论 -
深入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 · 1189 阅读 · 1 评论 -
深入Spring Boot:快速集成Dubbo + Hystrix
背景Hystrix 旨在通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以及监控和配置等功能。Dubbo是Alibaba开源的,目前国内最流行的java rpc框架。本文介绍在spring应用里,怎么把Dubbo和Hystrix结合起来使用。https://git...原创 2018-06-14 15:07:31 · 5557 阅读 · 2 评论 -
深入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 · 1878 阅读 · 0 评论 -
深入Spring Boot系列
原理/使用spring boot应用启动原理分析spring boot executable jar/war 原理深入Spring Boot:ClassLoader的继承关系和影响深入Spring Boot:Spring Context的继承关系和影响深入Spring Boot:实现对Fat Jar jsp的支持深入Spring Boot:快速集成Dubbo + Hystrix正...原创 2018-07-25 19:13:16 · 1434 阅读 · 0 评论 -
深入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 · 4696 阅读 · 1 评论 -
深入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 · 9465 阅读 · 6 评论 -
深入Spring Boot:Spring Context的继承关系和影响
前言对于一个简单的Spring boot应用,它的spring context是只会有一个。非web spring boot应用,context是AnnotationConfigApplicationContextweb spring boot应用,context是AnnotationConfigEmbeddedWebApplicationContextAnnotationConfigEmbe原创 2017-08-21 20:36:05 · 8034 阅读 · 0 评论 -
适应各种开发,测试,线上,线下环境的Spring配置方式
背景假设开发了一个中间件,比如是一个缓存系统,这个中间件要配置一个IP地址,还要配置一个Factory,从这个Factory里得到一个client,如: <bean name="cacheFactory" class="com.test.cache.Factory"> <property name="address" value="192.168...原创 2014-01-25 22:36:43 · 9561 阅读 · 0 评论 -
spring如何在xml里配置Calendar,Date
文章地址:http://blog.csdn.net/hengyunabc/article/details/14107963在Spring MVC里可以通过message converter机制来对数据进行格式化,但是在普通的Spring xml配置里就无能为力了。在网上找了一通,发现也有很多人苦恼这个问题,不妨记录下。Spring 自带一个PropertyEditor的机制,但原创 2013-11-03 20:26:55 · 4308 阅读 · 0 评论 -
为什么在Spring的配置里,最好不要配置xsd文件的版本号
为什么dubbo启动没有问题?这篇blog源于一个疑问:我们公司使了阿里的dubbo,但是阿里的开源网站http://code.alibabatech.com,挂掉有好几个月了,为什么我们的应用启动没有问题?我们的应用的Spring配置文件里有类似的配置: <?xml version="1.0" encoding="UTF-8"?><beans xmlns...原创 2014-03-30 14:24:31 · 63972 阅读 · 8 评论 -
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 · 12271 阅读 · 1 评论 -
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 · 188379 阅读 · 11 评论 -
应用内置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 · 6915 阅读 · 4 评论 -
正确实现用spring扫描自定义的annotation
在使用spring时,有时候有会有一些自定义annotation的需求,比如一些Listener的回调函数。比如:@Servicepublic class MyService { @MyListener public void onMessage(Message msg){ }}一开始的时候,我是在Spring的ContextRefreshedEvent事件里,通过c原创 2016-05-01 14:07:04 · 19169 阅读 · 3 评论 -
深入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 · 15389 阅读 · 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 · 9745 阅读 · 5 评论 -
Arthas实践:是哪个Controller处理了请求?
背景Arthas是阿里巴巴开源的Java诊断利器,深受开发者喜爱。https://github.com/alibaba/arthasArthas在线教程之前分享了Arthas怎样排查 404/401 的问题: http://hengyunabc.github.io/arthas-spring-boot-404-401/我们可以快速定位一个请求是被哪些Filter拦截的,或者请求最终是...原创 2019-06-05 11:09:31 · 1684 阅读 · 0 评论