在spring中@Value实现原理解析(一)——获取环境变量文章中阐述了@Value的方式注入环境变量的值,这篇文章我们将主要介绍spring如何通过@Value注解实现表达式的计算,以及实现类型转换的。 首先我们在开始源码解读之前,还是首先看一下具体Demo了解一下@Value的另一种使用方式。 DEMO @Slf4j @Service public class ValueAnnotationCollectionService { @Value("#{'${annotation.strings}'.split(…

11月 13, 2021 0条评论 1014点热度 1人点赞 阅读全文

在平常的开发中,@Value注解其实是使用频率很高的,在我锁经理的项目中主要有两种使用场景: 从上下文环境中读取配置属性值 通过该注解将配置值解析为常用集合。解析为常用集合,主要需要使用到spring SpEL表达式的使用。 而今天这篇文章的重点,我们则主要来学习下@Value在spring中是如何实现的,留下记录,便于后面自己学习。 基础用法 在开始学习@Value注解之前,还是通过一个简单的demo, 可以知道我们目标是什么。具体源码如下: @Slf4j @Service public class ValueA…

10月 25, 2021 0条评论 1285点热度 0人点赞 阅读全文

最近在看源码过程中,发现在根据spring实现中,很多都使用了@Import注解实现动态bean的注入实现,因此自己总结了一些@Import使用方式,便于对Spring框架的细节的理解。 @Import 在学习@Import注解时,我们首先看下spring中对该注解的描述信息: /** * Indicates one or more <em>component classes</em> to import &mdash; typically * {@link Configuratio…

10月 10, 2021 0条评论 570点热度 1人点赞 阅读全文

在spring cloud负载均衡之ribbon—demo实现 我们介绍了Ribbon的使用方式,其中给出了完整的demo使用方式,这篇文章将介绍RestTemplate类将介绍与Ribbon配合工作流程。如果对ribbon的工作原理感兴趣,可以参考spring clound负载均衡之Ribbon(三)- 工作原理 , 这篇文章介绍了Ribbon中重要的类型,以及类型的作用。 使用方式 在正式开始介绍RestTemplate方式工作方式之前,我们回顾下如何通过RestTemplate进行远程请求, 具体使用方式如下…

10月 3, 2021 0条评论 659点热度 0人点赞 阅读全文

在之前文章spring clound负载均衡之Ribbon(二)- 自动装配 中,介绍了ribbon自动装配的原理,这篇文章中将主要介绍在ribbon启动过程中,涉及到的重要类型。这些类型在ribbon中充当比较重要的作用。下面我们就一起来看看吧。 RibbonClientSpecification 该类作为ribbon配置类型存在,主要由spring-cloud提供,我们看下该类型的源码: /** * Specification with name and configuration. */ public int…

9月 25, 2021 0条评论 664点热度 0人点赞 阅读全文

在spring中,提供了@Qualifier注解,帮助我们精确的注入需要的bean实例。这边文章主要介绍该注解在spring开发中的两种使用方式,能够帮助我们优雅的实现代码。 首先开始学习时,先查看下该注解的源码,以及注解方式,然后再以demo的方式实现。 @Qualifier源码 /** * This annotation may be used on a field or parameter as a qualifier for * candidate beans when autowiring. It may…

9月 17, 2021 0条评论 684点热度 0人点赞 阅读全文

在之前的文章spring cloud负载均衡之ribbon—demo实现  通过demo的方式实现了ribbon的使用,在这个实例中,通过round robin的方法轮询访问远程依赖的服务列表,达到负载均衡的方式。在这边文章中,主要介绍ribbon自动装配的过程,以及在装配过程中比较重要的类型,让我们对ribbon有一个整体的设计概念,便于后面我们对ribbon的学习。 前情回顾 spring cloud负载均衡之ribbon—demo实现 中,我们在创建RestTemplate的时候, 使用了@LoadBalan…

9月 16, 2021 0条评论 484点热度 0人点赞 阅读全文

在微服务实现中,比较重要的一个组建就是负载均衡,主要是同一个服务又多实例时,为了能够将请求分发到不同的实例节点上, 负载均衡是一个比不可少的组件。在spring cloud eureka的实现中,默认使用了ribbon作为服务均衡的实现, 本篇文章主要是以demo的方式优先了解ribbon的一个具体的使用,然后才能更好的从源码角度分析ribbon的工作原理。 微服务准备 在该demo种,将会创建两个简单的服务,提供相同的接口,名称为spring-cloud-eureka-client-a 与spring-cloud…

9月 16, 2021 0条评论 477点热度 0人点赞 阅读全文

在之前章节中介绍了Eureka Server的启动流程,  该篇文章主要实现一个eureka server的简单demo, 便于在本地做调试。 创建项目 在本地中,创建一个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-instan…

9月 15, 2021 0条评论 398点热度 0人点赞 阅读全文

在之前章节spring cloud 服务发现之Eureka Client(三)—DiscoveryClient 中介绍了Eureka 客户端在启动过程中的流程,在DiscoveryClient启动过程中,会有两个重要的定时任务: 发送心跳信息 从EurekaServer同步注册实例节点 这篇文章就主要介绍这两个定时任务的执行逻辑以及从源码角度分析代码实现,能够更好的理解和使用Eureka。 心跳任务 之前章节中介绍了在DiscoveryClient实例化过程中,心跳任务TimedSupervisorTask开始执行…

9月 10, 2021 0条评论 490点热度 0人点赞 阅读全文

在上篇文章spring cloud 服务发现之Eureka Client(二)—自动装配中,介绍了Eureka Client自动装配的过程,其中设计到几个比较重要的类,包括ServiceRegistry, EurekaClient, EurekaDiscoveryClient类型。这些类型在Eureka Client整个生命周期中充当这比较重要的角色,在今天这章节中,将主要介绍DiscoveryClient对象,该对象主要包括了一下几个步骤: 注册当前实例 从eureka server中获取实例列表 心跳启动 类结…

9月 7, 2021 0条评论 512点热度 0人点赞 阅读全文
1234510