spring
synsdeng
不忘初心,方得始终
展开
-
Spring启动流程简要分析
本文基于Spring Boot1.4.x所写。Spring Boot伴随Spring4.x发布,可以说是Java Web开发近几年来最有影响力的项目之一,极大的提高了开发效率。据我说知,很多公司新起的项目当中都用起了SpringBoot框架。原创 2017-02-22 15:57:46 · 4107 阅读 · 2 评论 -
SpringCloud之Feign(一)
Feign是SpringCloud中的HTTP客户端,要使用Feign只需在项目中加入@EnableFeignClients注解即可。查看该注解定义可知它是通过FeignClientsRegistrar类实现扫描并注册feign client。 FeignClientsRegistrar里的registerFeignClients方法通过Spring的ClassPathScanni原创 2017-10-26 13:35:53 · 4215 阅读 · 0 评论 -
Spring MVC(一)
在SpringBoot中MVC初始化主要由DispatcherServletAutoConfiguration及WebMvcAutoConfiguration完成。DispatcherServletAutoConfiguration会向Spring容器中注册DispatcherServlet,并且使用ServletRegistrationBean动态的把DispatcherServlet添加到Se原创 2017-11-11 14:58:26 · 356 阅读 · 0 评论 -
SpringCloud之Ribbon(一)
在SpringCloud中Feign作为restful客户端,Eureka作为服务注册中心。Ribbon在Feign与Eureka之间充当中介,为客户端提供软件负载均衡算法。在Ribbon这一层中可以实现一个所谓的智能路由。 Ribbon是在Eureka之后初始化,Configuration类为RibbonAutoConfiguration。里面有如SpringClien原创 2017-11-01 19:53:44 · 1744 阅读 · 0 评论 -
可靠性消息事务实现
本方案基于外部事件表(Mysql)+MQ(ActiveMQ)+SpringCloud方式提供事务型消息发送。此方案并不依赖特定的事件表及MQ,TPS受限时可进行替换。主要应用在事务中包含的重接口、第三方系统调用等,以实现异步化,保证最终一致性。因为是异步调用,所以接口限制为不能有返回值。为了记录完整的调用日志链,整个过程中注意传递请求日志id。 在SpringCloud中远程调用默原创 2017-10-21 13:09:34 · 3000 阅读 · 0 评论 -
SpringCloud之Feign(二)
FeignClientsConfiguration初始化配置中:默认Encoder类型为SpringEncoder,功能为调用Spring的HttpMessageConverters处理参数。默认Decoder类型为ResponseEntityDecoder,它包装了SpringDecoder,做的事情也就是调用Spring的HttpMessageConverters处理接口返回值。默认Contr原创 2017-10-28 23:16:36 · 6800 阅读 · 0 评论 -
Spring Cache自定义缓存格式
SpringCache是一个基于注解来更新缓存的组件,对于大多数的缓存操作都适用,本质是基于AOP实现,也不用再重复千轮子,直接使用便是,并且支持SpringEL表达式,对于使用教程网上还是很多的。 很多时候为了兼容性以及方便,会把对象转换成JSON格式存入缓存(Redis)中,这就需要对Cache进行拦截,在加入缓存及获取缓存时做一个JSON格式转换。 通过@En原创 2017-09-30 11:23:52 · 2195 阅读 · 2 评论 -
日志打印及配置更新
记录日志是项目不可或缺的功能,一般Java用的比较多的是Slf4j、Log4j、Logback等。而且一般的做法都是在类,或父类里调用 LoggerFactory.getLogger(this.getClass())来创建一个Logger。像Controller、Service等还好,只需在父类中定义即可,其它的工具类,帮助类,抽象出来的业务类等就较麻烦,每个类都要这么来一下。原创 2017-08-27 17:38:01 · 610 阅读 · 0 评论 -
Spring 事务原理
事务的管理对于基于数据库的应用程序而言是非常重要的,本文基于Spring Boot来看看Spring是如何管理事务的,本文将从事务的理论、声明式事务配置以及事务管理来展开。 事务的特性(ACID):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性/永久性(Durability)。在同一个事务当中的SQL要么都成功,要么都失败(回滚原创 2017-03-16 22:13:14 · 428 阅读 · 0 评论 -
Spring Beans实例化
如果说Spring最核心的东西是什么,那就非Beans组件莫属了,Bean对于Spring的意义就象OOP对于Java的意义一样。本文基于Spring Boot1.4x来分析下Spring是如何实例化Bean。我们将会从Bean的定义、创建以及解析几个方面来分析。首先来说说Spring是如何找到并解析Bean属性的。如果使用注解的方式则Spring在启动初始化的时候会扫描项目classpath原创 2017-03-12 10:25:44 · 1011 阅读 · 0 评论 -
SpringCloud之Ribbon(二)
SpringClientFactory是Feign和Ribbon关联的纽带,具体可参见FeignRibbonClientAutoConfiguration。SpringClientFactory实例化IRule、IPing、ServerList、ILoadBalancer时默认是以PropertiesFactory中的Bean定义优先,PropertiesFactory和SpringClientF原创 2017-11-04 23:03:00 · 590 阅读 · 0 评论