Spring WebClient实现微服务的负载均衡调用
在微服务应用中,负载均衡来保证应用的可用性的常用手段。Spring-Cloud-LoadBalancer
提供了服务之间实现负载均衡调用的能力。
除了使用
Open-Feign外,还可以使用RestTemplate
和WebClint
进行服务调用。
WebClient
是
Spring WebFlux项目下的HTTP工具,基于Reactor的非阻塞流式API,是RestTemplate
的有效替代。
在微服务应用中,负载均衡来保证应用的可用性的常用手段。Spring-Cloud-LoadBalancer
提供了服务之间实现负载均衡调用的能力。
除了使用
Open-Feign外,还可以使用RestTemplate
和WebClint
进行服务调用。
WebClient
是
Spring WebFlux项目下的HTTP工具,基于Reactor的非阻塞流式API,是RestTemplate
的有效替代。
除了在application.yml
或application.properties
中配置Spring-Boot应用程序的参数外,还可以通过运行java -jar
命令行的方式来配置参数。
比如java -jar -Dspring.profiles.active=dev app.jar
就是常使用的命令之一。
当然,
java -jar
命令不止配置Spring参数,还可以配置JVM参数。本文只以Spring-Boot应用程序为例。
有时候,可能会看见这样的应用启动方式:java -jar --spring.profiles.active=dev app.jar
,它也是可行的。这两个分别是什么呢?
HATEOAS 是 REST(Representational state transfer) 的约束之一。
HATEOAS 是 Hypermedia As The Engine Of Application State 的缩写,从字面上理解是 “超媒体即是应用状态引擎” 。其原则就是客户端与服务器的交互完全由超媒体动态提供,客户端无需事先了解如何与数据或者服务器交互。相反的,在一些RPC服务或者Redis,Mysql等软件,需要事先了解接口定义或者特定的交互语法。
...@Transactional
注解开始
#@Transactional
注解是使用spring-transaction的最便捷方式。也是使用Spring框架开发最先接触的内容。
当你在一个服务的方法上使用@Transactional
注解时,意味着你希望为此方法开启事务支持。如果你的项目成功配置了数据源和事务管理器,Spring会为此方法使用如下默认设置开启事务:
几个说明:
properties配置文件中,;spring.messages.basename
必须要加classpath前缀。如spring.messages.basename=classpath:i18n/messages
必须要手动配置;MessageSource
,springboot不会自动配置之- 如果使用
MessageSource.getMessage()
方法,第一个参数的引用形式为"code"
,而不是"{code}"
或者"${code}"
。如messageSource.getMessage("test.msg", null,Locale.getDefault());- 在配置
LocalValidatorFactoryBean
之后,才可以在javax.validation.constraints
包下的注解(@Size
,@NotNull
...)下的message属性中使用"{code}"
的形式声明校验提示信息。如@NotNull(message = "{leftTime.not.null}")
;- springMVC的locale配置和JVM的locale配置不一样,在application.properties中配置的
spring.mvc.locale=zh_CN
实际上配置的是WebMvcProperties
,在获取消息时,locale信息应该使用webMvcProperties.getLocale()
1获取而不是使用Locale.getDefault()
获取。
MessageSource is a powerful feature available in Spring applications. This helps application developers handle various complex scenarios with writing much extra code, such as environment-specific configuration, internationalization or configurable values.
One more scenario could be modifying the default validation messages to more user-friendly/custom messages.
In this tutorial, we'll see how to configure and manage custom validation MessageSource in the application using Spring Boot.
...现在流行在项目中使用 swagger对接口进行测试,这确实很方便、直观。
但是MockMvc作为spring-test包中指定的测试框架,在没有使用swagger的项目中,使用其进行测试是很好的选择。
...有一个cd接口,其实体类用于播放歌曲,同时我们想在播放歌曲的时候记录每个曲目的播放次数。看起来,记录次数这个事和播放曲目是不相干的事情,当然,我们可以在每首歌曲播放完成之后记录,但是更好的办法是使用一个切面,切入到播放方法中,来完成这件事,这样可以减少无关逻辑对代码的侵入。
...