spring原理

微服务—Spring Cloud原理、实战

半城伤御伤魂 提交于 2019-11-26 16:49:58
SpringCloud 关键名词 服务发现(service discovery) 服务ID SpringCloud经常用的5个组建: 服务发现——Netflix Eureka 传统DNS+负载均衡在微服务中不足 服务发现架构 基于云的微服务环境的服务发现其特征 部署高可用eureka server集群 实例1配置 实例2配置 client端配置 客服端负载均衡——Netflix Ribbon/Feign Ribbon + restTemplate 一般都是用 Feign client,比较方便。 断路器——Netflix Hystrix Feign中使用断路器 服务网关——Netflix Zuul 分布式配置——Spring Cloud Config 关键名词 服务发现(service discovery) 在许多分布式系统架构中,都需要去获取机器的物理地址(微服务实例部署的服务器地址及端口)。这一认知在分布式系统架构开始的时候就已经存在,而等到分布式计算出现的时候,被正式称为服务发现(service discovery)。 SpringCloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建。 SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflix。 服务ID 服务ID只是被服务发现代理用来给不同服务分组而已

Spring国际化

◇◆丶佛笑我妖孽 提交于 2019-11-26 12:53:32
由公司平台及相关产品要向印度,俄罗斯等国家发展,原有项目必须做国际化; 原理很简单,spring引用ReloadableResourceBundleMessageSource并指定配置文件的路径,其bean的id指定是id="messageSource",MessageSource会自动找到配置文件message_en.properties、message.properties;在Action层的基类里定义方法获取session中的Language,浏览器在切换语言时,即session的Language的zh_cn , en变化(现在只支持中英);获取spring容器applicationContext调用getMessage传入key和要动态替换的参数,来获取配置文件的信息返回到前端。 1.app-resources.xml <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="cacheSeconds" value="10800" /> <property name="fallbackToSystemLocale" value="false" /> <property name=

Spring Security 之多AuthenticationProvider认证模式实现

情到浓时终转凉″ 提交于 2019-11-26 10:27:59
多AuthenticationProvider认证模式实现原理及源码分析可参考: https://github.com/mingyang66/spring-parent/blob/master/spring-security-oauth2-server-redis-service/providermanager.md 多AuthenticationProvider实现ProviderManager会按照添加入认证请求链中的顺序来验证,上面的源码分析及实现原理已经说的很清楚了, 这一片就直接看代码实现; 1.AuthenticationProvider认证类UserSmsAuthenticationProvider实现 package com.yaomy.security.oauth2.provider; import com.yaomy.security.oauth2.event.event.UserLoginFailedEvent; import com.yaomy.security.oauth2.exception.PasswordException; import com.yaomy.security.oauth2.exception.UsernameException; import com.yaomy.security.oauth2.service

Spring Spring Mvc源码 图形化解读

一个人想着一个人 提交于 2019-11-26 10:13:52
阶段性的学习总结,留作纪念: 已完成:Spring源码、Spring mvc源码 简单了解,画图学习 待完成:@RequestBody、@ResponseBody的解析过程分析,Aop、Tx在请求时的处理 PS:大半个月才画出来,没想到能坚持下来,还有mac不用鼠标画图是真的难受 一、Spring源码,初始化 目的:了解Bean的实例化、初始化进程 分析起源:以Web容器为例,进行源码剖析,ContextLoadListener监听启动后,进行Spring容器的初始化,没有使用常用的ClasspathXmlApplicationContext进行分析(其实原理是一样的,只是想把tomcat启动和容器初始化联系在一起) 二、Spring Mvc源码之初始化 目的:了解SpringMvc 常用组件HandlerMapping /HandlerAapter/ViewResolver的初始化进程 分析起源:tomcat启动后,HttpServletBean的init方法会被执行,从而开始initWebApplicationContext,执行Spring源码的Bean初始化工作,此时需要注意的是实现了InitializingBean的类会执行afterPropertiesSet();是mvc初始化的入口 三、Spring Mvc源码之请求处理 目的:了解请求url怎么找到对应方法的

Spring Framework 条件装配 之 @Conditional

只谈情不闲聊 提交于 2019-11-26 01:01:12
Spring Framework 条件装配 之 @Conditional 前言 了解SpringBoot的小伙伴对Conditional注解一定不会陌生,在SpringBoot项目中,Conditional注解被广泛的使用以及扩展出了许多Condition派生注解。虽然Conditional在SpringBoot中被丰富了很多,但它是在Spring Framework 4.0中提出的,所以本文还是以Spring Framework 为基础进行讲解。 推荐阅读 黑色的眼睛 の 个人博客 Spring Framework 组件注册 之 FactoryBean Spring Framework 组件注册 之 @Import Spring Framework 组件注册 之 @Component @Conditional 说明 要使用 @Conditional 注解,必须先了解一下 Conditiona 接口,它与 @Conditional 注解配合使用,通过源码我们也可以看出,使用 @Conditional 注解必须要指定实现 Conditiona 接口的class。 @Target({ElementType.TYPE, ElementType.METHOD}) public @interface Conditional { /** * All {@link Condition

20191125 事务以及隔离级别二

橙三吉。 提交于 2019-11-25 23:11:18
Spring的配置式事务可以把 多个操作数据库的方法 配置在一个事务中。 Spring的事务是什么?与数据库的事务是否一样? 本质上其实是同一个概念, spring的事务是对数据库的事务的封装 ,最后本质的实现还是在数据库,假如数据库不支持事务的话,Spring的事务是没有作用的. 数据库的事务说简单就只有开启,回滚和关闭 。 Spring事务对数据库事务的包装,原理就是拿一个 数据连接 ,根据Spring的事务配置, 操作这个数据连接对数据库进行事务开启,回滚或关闭操作 . Spring除了实现这些,还配合 spring的传播行为对事务进行了更广泛的管理 .其实这里还有个重要的点,那就是事务中涉及的隔离级别,以及spring如何对数据库的隔离级别进行封装. MySql中的事务嵌套 1、 Mysql中的事务必须是InnoDB 、Berkeley DB引擎,myisam不支持。 2、Mysql是 不支持嵌套事务 的,开启了一个事务的情况下,再开启一个事务,会 隐式的提交上一个事务 。 3、Mysql默认是autocommit=1,也就是说默认是立即提交,如果想开启事务,先设置autocommit=0,然后用START TRANSACTION、 COMMIT、 ROLLBACK来使用具体的事务。 4、事务控制要成对出现,有开启,必有提交和回滚,如果不匹配导致事务计时器错误