Spring Boot 最核心的 3 个注解详解

分布式链路追踪之Spring Cloud Sleuth+Zipkin最全教程 今天这篇文章陈某介绍一下链路追踪相关的知识,以Spring Cloud Sleuth和zipkin这两个组件为主,后续文章介绍另外一种。 文章的目录如下: 为什么需要链路追踪? 大型分布式微服务系统中,一个系统被拆分成N多个模块,这些模块负责不同的功能,组合成一套系统,最终可以提供丰富的功能。在这种分布式架构中,一次请求往往需要涉及到多个服务,如下图: 服务之间的调用错综复杂,对于维护的成本成倍增加,势必存在以下几个问题: 服务之间的依赖与被依赖的关系如何能够清晰的看到? 出现异常时如何 阅读详情

Spring Boot 最核心的 3 个注解详解

最近面试一些 Java 开发者,他们其中有些在公司实际用过 Spring Boot, 有些是自己兴趣爱好在业余自己学习过。然而,当我问他们 Spring Boot 最核心的 3 个注解是什么,令我失望的是鲜有人能答上来,这样你能说你对 Spring Boot 很了解吗?这可能还会给你减分!

Spring Boot 核心注解讲解

Spring Boot 最大的特点是无需 XML 配置文件,能自动扫描包路径装载并注入对象,并能做到根据 classpath 下的 jar 包自动配置。

所以 Spring Boot 最核心的 3 个注解就是:

1、@Configuration

org.springframework.context.annotation.Configuration

这是 Spring 3.0 添加的一个注解,用来代替 applicationContext.xml 配置文件,所有这个配置文件里面能做到的事情都可以通过这个注解所在类来进行注册。

下面几个相关注解也是非常重要的!

@Bean

用来代替 XML 配置文件里面的 <bean ...> 配置。

@ImportResource

如果有些通过类的注册方式配置不了的,可以通过这个注解引入额外的 XML 配置文件,有些老的配置文件无法通过 @Configuration 方式配置的非常管用。

@Import

用来引入额外的一个或者多个 @Configuration 修饰的配置文件类。

@SpringBootConfiguration

这个注解就是 @Configuration 注解的变体,只是用来修饰是 Spring Boot 配置而已,或者可利于 Spring Boot 后续的扩展,源码如下。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
}

2、@ComponentScan

org.springframework.context.annotation.ComponentScan

这是 Spring 3.1 添加的一个注解,用来代替配置文件中的 component-scan 配置,开启组件扫描,即自动扫描包路径下的 @Component 注解进行注册 bean 实例到 context 中。

另外,@ComponentScans 是可重复注解,即可以配置多个,用来配置注册不同的子包。

3、@EnableAutoConfiguration

org.springframework.boot.autoconfigure.EnableAutoConfiguration

看全路径就知道,这是自 Spring Boot 诞生时添加的注解,用来提供自动配置,上面的两个都是 spring-context 包下的,不属于 Spring Boot,所以 Spring 3.0 之后的去 XML 配置方式已经为 Spring Boot 埋下了伏笔!

最后的彩蛋

Spring Boot 最核心的 3 个注解介绍完了,大家可能会有疑问,为什么最主要的注解 @SpringBootApplication 不在其中?

留给大家的彩蛋,其实这个 @SpringBootApplication 注解就包含了以上 3 个主要注解,平时没有自定义配置的需求,则使用 @SpringBootApplication 注解完全就可以了!

让我们来看下 @SpringBootApplication 注解的源码,一切明了!

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
		@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
 ...
}

看完涨姿势了吗?

点赞转发一下吧,以后碾压面试官!

 

Spring Cloud Alibaba 第二篇(Sentinel、Sleuth、Gateway组件) Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,Spring Cloud Gateway 旨在为微服务架构提供一种简单而有效的统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,目标是替代 Netflix ZUUL。 阅读详情

相关推荐

SpringCloud分布式框架搭建】spring-cloud-gateway 集成 sleuth后,无法获取 %X{traceId} 和 %X{spanId}

问题: spring-cloud-gateway 升级到2020.0.0-M6,spring-boot 升级到 2.4.0。 gateway集成sleuth后,无法获取 %X{traceId} 和 %X{spanId} 说明: 下文 以 SCG 代码spring-cloud-gateway。 SCG版本在2020.0.0之前,即 spring-boot 在 2.1.x—2.3.x。 只要集成了sleuth后,可以正常获取链路ID的。但是升级到 2.4.0之后,就无法正常获取...

seowen的开发 小本子 3483

SpringCloud(四)SpringCloud Gateway网关、SpringCloud Stream消息驱动、SpringCloud Sleuth分布式请求链路跟踪

SpringCloud Gateway网关、SpringCloud Stream消息驱动、SpringCloud Sleuth分布式请求链路跟踪

qq_44665283的博客 624

Spring Cloud系列教程 | 第十六篇:Spring Boot 2.0,Eureka和Spring Cloud Config Gateway Sleuth快速构建微服务

推荐 Spring Boot/Cloud 视频: Java 微服务实践 - Spring Boot Java 微服务实践 - Spring Cloud 示例源码 Spring Boot 2.0,Eureka和Spring Cloud Config Gateway Sleuth快速构建微服务 我的博客上有很多关于Spring Boot和Spring Cloud的微服务的文章。本文的主要目的是简要...

qq_43253123的博客 3279

spring cloud gateway网关和链路监控

spring cloud组件

qq_55648724的博客 3145

spring-cloud-gateway 集成 spring-cloud-sleuth 全链路后,traceId 不生效,无法获取 %X{traceId} 和 %X{spanId}

spring-cloud-gateway 集成 spring-cloud-sleuth 全链路后,traceId 不生效,无法获取 %X{traceId} 和 %X{spanId}

Charlven的博客 4825

限时开源阿里十年架构师出品的纯手写spring全家桶笔记

嗨咯,大家好!没错,又是我,还跟前面一样,有好东西我才会出现。那是什么好东西呢?今天啊,给他分享,不管是新手老手都能拿下来好好学习学习。话不多说,看内容。

Java技术攻略的博客 123

Github 上点赞 34.5K!阿里巴巴“SpringCloudAlibaba” (全彩版小册限时开源

Spring-Cloud-Alibaba 项目由阿里巴巴的开源组件和多个阿里云产品组成,旨在实现和公开众所周知的 Spring 框架模式和抽象,为使用阿里巴巴产品的 Java 开发者带来 Spring-Boot 和 Spring-Cloud 的好处。使用 Spring Cloud Alibaba,只需添加一些注解和少量配置,即可将 Spring Cloud 应用连接到 Alibaba 的分布式解决方案中,并使用 Alibaba 中间件构建分布式应用系统。在这个阶段,我将给出这些组件的最佳实践和原理分析。

m0_46995061的博客 859

GitHub下载热榜,阿里三份百亿级架构系统手册。限时开源

在如今是属于高流量的时代,不知道各位了解高并发吗?今天给大家带来的是出自阿里大牛手写三份绝密手册,《百亿级并发系统设计》+《微服实战 +亿级流量网站架构核心技术

Java技术攻略的博客 217

GitHub强势置顶!阿里资深老专家微服务容器实战开发笔记限时开源

在计算机技术日新月异的今天,层出不穷的新技术推动了生产力的发展,也推动了整个社会的进步。软件架构从单体架构到分布式架构,从SOA架构微服务架构,再到服务网格。数据库从 Oracle包打天下到 MySQL大行其道,再到内存数据库、NoSQL数据库遍地开花。容器编排调度技术从Mesos、Swarm、Kubernetes三足鼎立,到最终Kubernetes一统天下。“工欲善其事,必先利其器。”在互联网转型的大潮中,需要在思想、方法、技术等方面全面转型。

m0_73311735的博客 141

GitHub下载热榜,阿里技术限时开源三份百亿级架构系统手册

本手册分为八章包含(架构设计,微服务架构Docker环境搭建,Spring Boot初体验,使用Dubbox+Spring Boot搭建微服务架构,基于Redis+ActiveMQ实现高并发访问,分布式下的第三方接入,高并发测试)今天给大家带来的是出自阿里大牛手写三份绝密手册,《百亿级并发系统设计》+《微服实战 +亿级流量网站架构核心技术》手册分为21章包含(高可用,隔离术,限流详解,应用级缓存,异步并发实战,多级缓存)本手册分为7部分包含(基础,数据库,缓存,分布队列,分部式服务,维护,实战篇)

他很懒,但也在努力的生活着 72

Github上标星40K的Java面试笔记限时开源

该文档在Github上收获40K+star的Java面试神技(这赞数,质量多高就不用我多说了吧)非常全面,包涵Java基础、Java集合、JavaWeb、Java异常、OOP、IO与NIO、反射、注解、多线程、JVM、MySQL、MongoDB、Spring全家桶、计算机网络、分布式架构、Redis、Linux、git、前端、算法与数据结构、MyBatis、RocketMQ、Netty、Dubbo。内容非常丰富,已经帮很多人拿下互联网一线公司的offer。

sjkflw121150的博客 852

霸榜Github阿里P9微服务全栈笔记限时开源,已破赞87K

前言 随着云端办公以来,发现微服务越来越重要了。Docker 容器技术和自动化运维等相关技术发展,使微服务变得更容易维护。大家可能都注意到,像阿里、腾讯、字节跳动等大厂的后端岗位明确写出:微服务设计经验优先。如果没有这方面的准备的话,想拿到高薪可不容易。 不难预料,今年,微服务只会越来越完善,成为将来大中型企业业务架构的发展方向。但对于一些 coding 的朋友,由于接触不到一线实战架构设计,眼看别人都在向微服务架构转型,自己却只能日复一日地重复造轮子。 微服务越来越重要,但以下6个点是大家也都需要注意的

欢迎来到我的博客 587

再次登顶GitHub阿里架构师上传的微服务架构实战,限时开源

在互联网时代,互联网产品的一大特点就是需要快速发布新功能,支持高并发和大数据。传统的架构已经慢慢不能支撑互联网业务的发展,这时候微服务架构顺势而出。然而微服务学习并不是那么容易的,为了帮助小伙伴们更好的学习和工作,今天给大家分享一份手册。这份手册以实战化训练为宗旨,用详尽的案例讲述Spring Cloud的项目搭建方法和常用技术。主要分为以下四大部分:结合开发者实际工作中的范例,逐一讲解Spring Cloud的相关知识和技术,帮助读者在实战中掌握知识,轻松拥有项目经验。

公众号:该用户快成仙了 118

基于springboot2.1.4 springcloud Greenwich版本中整合 网关gateway实现服务链路追踪Spring Cloud Sleuth集成ZipKin实现

最近看《深入理解Spring Cloud微服务构建》是一书之中,发现书中所讲网关是Zuul实现的,由于笔者学习的版本基本上是在spring5.0,springboot2.0以上实现,进而发现了spring官方网关gateway ,因此替代了书中所用Zuul网关,想知道gateway网关和Zuul区别的,网上自行查阅即可。 话不多说 上demo 结构目录 由上而下依次是 ...

xzjayx的博客 6588

SpringCloud05-GateWay、Config、Bus、Stream、Sleuth

SpringCloud05GateWay一、是什么二、非阻塞异步模型WebFlux三、工作流程四、Gateway9527搭建1.建model2.pom3.yml4.启动类5.yml新增网关配置6.测试五、Gateway配置路由的两种方式六、配置动态路由七、常用的PredicateRoute Predicate Factories常用的Route Predicate FactoryAfter1.改9527的yml2.写个测试类3.测试CookieHeader八、Filter生命周期:种类(具体看官方文档自定义

CSDN_SHY的博客 602

手把手教你搭建SpringCloud项目(十八)集成Sleuth分布式链路跟踪

今天这篇文章介绍一下链路追踪相关的知识,以Spring Cloud Sleuth和zipkin这两个组件为主。 为什么需要链路追踪? 大型分布式微服务系统中,一个系统被拆分成N多个模块,这些模块负责不同的功能,组合成一套系统,最终可以提供丰富的功能。在这种分布式架构中,一次请求往往需要涉及到多个服务,如下图: 服务之间的调用错综复杂,对于维护的成本成倍增加,势必存在以下几个问题: 服务之间的依赖与被依赖的关系如何能够清晰的看到? 出现异常时如何能够快速定位到异常服务? 出现性能瓶颈时如何能够迅速定位哪个

〆、挽风的博客 3536

SpringCloud系列(四)、SpringCloud微服务网关概述

SpringCloud微服务网关概述1、微服务网关概述1.1、为什么要用微服务网关?1.2、什么是微服务网关?1.3、网关的作用及应用场景1.4、常见的API网关实现方式2、基于Nginx的网关实现2.1、Nginx介绍2.2、Nginx正向代理2.3、Nginx反向代理2.4、准备工作3、基于微服务网关Zuul的实现3.1、Zuul简介3.2、搭建Zuul网关服务器模块3.3、面向服务的路由3.4、简化网关Zuul的路由配置3.5、Zuul加入后的微服务架构3.6、Zuul 中的过滤器3.7、Zuul F

一宿君 1664
上一篇: 对于自学Java的人来说,如何系统的,全方面的学习Java?
下一篇: Spring Boot 返回 JSON 数据,一分钟安排下来
Javaesandyou
博客等级 码龄5年 732粉丝 564原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值