Spring
文章平均质量分 70
Spring全家桶,包括Spring、Spring MVC、Spring Boot等
wuychn
这个作者很懒,什么都没留下…
展开
-
Spring Boot 2.1.3.RELEASE 整合Redis集群
Redis集群搭建,详见Redis 集群。一、pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi...原创 2019-03-22 17:03:30 · 2168 阅读 · 0 评论 -
Spring Boot 2.1.0.RELEASE 使用 Redis 缓存数据
Spring对缓存的支持,可以参考这篇文章。本例基于Spring Boot 2.1.0.RELEASE 整合 Redis,在此基础上增加使用Redis缓存数据。修改RedisConfig配置类,增加CacheManager的配置,修改后的RedisConfig如下:package com.wuychn;import com.alibaba.fastjson.support.spr...原创 2019-03-05 17:30:33 · 333 阅读 · 0 评论 -
Spring Boot yml读取环境变量的值
公司项目有个需求,某个配置值需要从环境变量读取(docker),搜索了一下,原来在SpringBoot中非常简单,使用如下方式即可:xxx: yy: ${JAVA_HOME}当然,如果环境变量JAVA_HOME不存在,我们也可以指定一个默认值:xxx: yy: ${JAVA_HOME:zzz}以上的zzz就是当环境变量JAVA_HOME不存在时的默认值。...原创 2020-04-22 15:01:15 · 5454 阅读 · 0 评论 -
Spring Boot 2.1.0.RELEASE 整合 RabbitMQ
pom.xml:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/原创 2018-12-04 17:35:47 · 928 阅读 · 0 评论 -
Spring Boot 2.1.0.RELEASE 整合 MyBatis
创建数据库表的 sql:DROP DATABASE IF EXISTS mytest;CREATE DATABASE IF NOT EXISTS mytest;USE mytest;CREATE TABLE t_user( user_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, user_name VARCHAR(255) NOT NU...原创 2018-12-06 14:38:11 · 381 阅读 · 0 评论 -
Spring Boot动态创建Bean
通常我们是使用@Component等注解某个类让其被Spring IoC容器扫描,或者使用@EnableXXX(@Import)注解来导入,或者在META-INF/spring.factories中指定配置类(key是org.springframework.boot.autoconfigure.EnableAutoConfiguration)。但是,某些情况下,我们需要更加灵活的创建Bean,此时可以使用如下的形式:public void register() { ApplicationC原创 2020-12-23 13:32:47 · 2230 阅读 · 0 评论 -
Spring Boot 2.1.0.RELEASE 整合WebSocket
初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处?这是由于 HTTP 协议有一个缺陷:通信只能由客户端发起,HTTP 协议做不到服务器主动向客户端推送信息。举例来说,我们想要查询当前的排队情况,只能是页面轮询向服务器发出请求,服务器返回查询结果。轮询的效率低,非常浪费资源。WebSocket 就是解决这个问题的。WebSo...原创 2019-01-15 15:01:08 · 1050 阅读 · 1 评论 -
Spring Boot使用Netty实现客户端与服务器通信
一、服务端1、添加Maven依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2...原创 2019-08-30 15:04:37 · 5585 阅读 · 8 评论 -
Spring Boot 2.1.0.RELEASE 整合 Redis
一、添加Maven依赖完整的pom.xml如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...原创 2019-03-05 14:37:34 · 535 阅读 · 0 评论 -
Spring Boot 1.5.17.RELEASE 整合 MyBatis
创建数据库表的 sql:DROP DATABASE IF EXISTS mytest;CREATE DATABASE IF NOT EXISTS mytest;USE mytest;CREATE TABLE t_user( user_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, user_name VARCHAR(255) NOT NU...原创 2018-11-28 16:47:56 · 1036 阅读 · 0 评论 -
Spring Boot 使用 @Aspect 注解实现 AOP
AOP(Aspect Oriented Programming,面向切面编程)是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。在Spring...原创 2019-05-13 14:45:46 · 13262 阅读 · 0 评论 -
Spring Cloud Config
Config Server 可以从本地读取配置文件,也可以从远程 Git 读取配置文件。从本地读取配置文件本例采用 Maven 多模块结构,首先创建父项目 spring-cloud-config,使用的 Spring Boot 版本是 2.0.6.RELEASE,Spring Cloud 的版本是 Finchley.RELEASE,其 pom 文件如下:<?xml versio...原创 2018-12-22 15:12:24 · 153 阅读 · 0 评论 -
网关 Zuul
Zuul 简介Zuul 作为微服务的网关组件,用于构建边界服务(Edge Service),致力于动态路由、过滤、监控、弹性伸缩和安全。Zuul 在微服务系统中有着重要作用:• Zuul、Ribbon 和 Eureka 相结合,可以实现智能路由和负载均衡的功能,Zuul 能够将请求按照某种策略分发到集群中的多个服务实例。• 网关将所有服务的 API 接口统一聚合,并统一对外暴露。外界系...原创 2018-12-18 22:14:11 · 648 阅读 · 0 评论 -
Eureka Server 集群搭建
Eureka Client(包括 service provider 和 service consumer)会定期(默认是30秒,可以修改)向 Eureka Server 发送心跳来进行服务续约(renew),同时 Eureka Client 也会定期(默认30秒,可以修改)从 Eureka Server 获取服务注册列表缓存到本地,可见 Eureka Server 在微服务系统中有着举足轻重的作用...原创 2018-12-13 14:47:39 · 562 阅读 · 0 评论 -
Hystrix Dashboard
Hystrix Dashboard 是监控熔断器的状况的组件,提供了数据监控和友好的图形化展示界面。在 RestTemplate 中使用 Hystrix Dashboard本例在RestTemplate 和 Ribbon 上使用熔断器的例子上进行改造。首先在 service-consumer 的 pom 文件中加上 Actuator 的起步依赖和 Hystrix Dashboard 的起步...原创 2018-12-16 20:48:01 · 277 阅读 · 0 评论 -
使用 Turbine 聚合监控
在使用 Hystrix Dashboard 组件监控服务的熔断状况时,每个服务都有一个 Hystrix Dashboard 主页,当服务数量很多时相当不方便。为了同时监控多个服务的熔断器的状态,可以使用 Turbine。Turbine 用于聚合多个 Hystrix Dashboard,将多个 Hystrix Dashboard 组件的数据放在一个页面上展示,进行集中监控。创建父项目本例采用...原创 2018-12-17 21:59:26 · 710 阅读 · 0 评论 -
服务链路追踪 Spring Cloud Sleuth
微服务系统是一个分布式架构,一个微服务系统往往有很多服务单元。由于服务数量众多,业务的复杂性较高,如果出现了错误和异常,很难去定位,主要体现在一个请求可能需要调用很多个服务,而内部服务的调用复杂性决定了问题难以定位。所以在微服务架构中,必须实现分布式链路追踪,去跟进一个请求到底有哪些服务参与,参与的顺序又是怎样的,从而达到每个请求的步骤清晰可见,出了问题能快速定位。常见的链路追踪组件有 Goo...原创 2018-12-22 19:40:04 · 281 阅读 · 0 评论 -
使用 RestTemplate 和 Ribbon 消费服务
RestTemplate 是 Spring Resources 中一个访问第三方 RESTful API 接口的网络请求框架,它的主要方法都与 HTTP 协议的一些方法紧密相连,比如 HEAD、GET、POST、PUT、DELETE 和 OPTIONS 等方法,这些方法在 RestTemplate 中对应的方法为 headForHeaders()、getForObject()、postForOb...原创 2018-12-13 22:05:31 · 275 阅读 · 0 评论 -
使用 Feign 消费服务
Feign 采用了声明式 API 接口风格,将 Java HTTP 客户端绑定到它的内部,Feign 的首要目标是将 Java HTTP 客户端调用过程变得简单。本例采用 Maven 多模块结构,其中服务注册中心、服务提供者的代码和使用 RestTemplate 和 Ribbon 消费服务类似,这里只展示服务消费者的代码。新建一个 Maven 工程,命名为 service-consumer...原创 2018-12-15 15:10:39 · 278 阅读 · 0 评论 -
The Hystrix timeout of 20000ms for the command uaa-service is set lower than the combination of the
Zuul的配置如下:server: port: 8000spring:# 单机# redis:# host: 192.168.124.100# password:# port: 6379# 集群 redis: database: 0 cluster: nodes: - 192.168.111.192:6...原创 2019-09-26 17:47:44 · 7163 阅读 · 2 评论 -
熔断器 Hystrix
当服务的某个 API 接口的失败次数在一定时间内小于设定的阈值时,熔断器处于关闭状态,该 API 接口正常提供服务。当该 API 接口处理请求的失败次数在一定时间内大于设定的阈值时,Hystrix 判定该 API 接口出现了故障,打开熔断器,这时该 API 接口会执行快速失败的逻辑,不执行业务逻辑,请求的线程不会阻塞。处于打开状态的熔断器,一段时间后会处于半打开状态,并将一定数量的请求执行正常逻辑...原创 2018-12-15 21:33:24 · 298 阅读 · 0 评论 -
SpringMVC自定义注解进行参数校验
在我的另一篇博客中(SpringMVC),学习了如何使用Spring MVC结合Hibernate的校验框架validation(它和hibernate没有任何关系)对参数进行校验。在实际项目中,参数的校验逻辑可能比较复杂,这时我们可以自定义注解来实现参数校验,下面是一个简单的例子。pom.xml<?xml version="1.0" encoding="UTF-8"?>&...原创 2018-10-11 13:41:28 · 3891 阅读 · 0 评论 -
Spring MVC统一异常处理
我们知道,Service层封装了业务处理的代码,应该抛出异常,以触发事务回滚。为了返回客户端友好的错误信息,我们需要在Controller中使用try-catch对Service中抛出的异常进行捕获,做一些处理。但在实际项目中,我们可能会定义各种各样的异常,并且针对每一种异常可能会有不同的返回信息,这样一来,Controller中就会有大量的try-catch,既影响阅读,也不利于系统维护。看...原创 2018-10-23 17:19:11 · 219 阅读 · 0 评论 -
@Value注入List、数组、Set、Map
https://blog.csdn.net/weixin_39581716/article/details/111170059原创 2021-07-12 16:39:29 · 34082 阅读 · 4 评论 -
@Conditional
@Conditional是Spring 4新提供的注解,它的作用是按照指定的条件进行判断,满足条件时容器才会注册bean。@Conditional的源码如下:原创 2021-06-15 15:14:53 · 124 阅读 · 0 评论 -
Spring Bean 的生命周期
我们知道 Servlet 拥有明确的生命周期,Spring 容器中的 Bean 也拥有相似的生命周期。Spring Bean 的生命周期从创建Spring容器开始,直到 Spring 容器销毁 Bean。Bean的生命周期由多个特定的生命阶段组成,每个生命阶段都开出了一扇门(提供一些接口),允许外界对 Bean 施加控制。在 Spring 中,可以从两个层面定义 Bean 的生命周期:第一个层面...原创 2018-12-13 11:14:28 · 286 阅读 · 0 评论