当前位置: 首页 > news >正文

【SpringCloud】基础问题

文章目录

  • spring-cloud-dependencies和spring-cloud-alibaba-dependencies的区别
  • <dependencyManagement>和<dependencies>的区别
    • <dependencyManagement>
    • <dependencies>
  • 为什么在主函数上加上@SpringBootApplication注解就可以扫描到对象
  • 为什么bootstrap.yml文件不是一个绿色的叶子

spring-cloud-dependencies和spring-cloud-alibaba-dependencies的区别

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope>
</dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope>
</dependency>

● spring-cloud-dependencies是管理spring-cloud的相关组件的版本,确保组件之间的兼容性,该依赖是springloud提供的,用于管理Spring Cloud Netflix 系列组件(如 Eureka、Ribbon、Hystrix 等)的版本

● spring-cloud-alibaba-dependencies:管理spring-cloud的相关组件的版本,该依赖是阿里巴巴提供,用于管理 Spring Cloud Alibaba 系列组件(如 Nacos、Sentinel、Dubbo 等)的版本。

和的区别

下的依赖是子模块可以直接继承的,子模块不需要在自己的pom中中引入相关依赖
下的依赖,子模块需要引入相关的依赖且不能指定版本号,父pom中必须要指定依赖的版本,这样子模块才能继承父pom中的依赖

作用:主要用于集中管理项目中的依赖版本。它不会直接引入依赖,而是定义了一组依赖的版本和范围,供子项目或模块使用。

使用场景:

当你有多个模块(如多模块 Maven 项目)时,可以在父 POM 中使用 来定义所有子模块共享的依赖版本。
这样可以确保所有模块使用相同的版本,避免版本冲突和不一致。

作用:用于直接定义项目所需的依赖。添加到这个部分的依赖会被立即引入到项目中。

使用场景:

当你需要在当前项目中实际使用某个依赖时,可以将其添加到 中。它会在构建时被下载并包含在项目中。

为什么在主函数上加上@SpringBootApplication注解就可以扫描到对象

@SpringBootApplication上还使用了@ComponentScan注解,该注解是扫描那个方法、类上使用了@Service,@Controller等这些注解,扫描到之后,就把相应的对象加载到IOC容器中

在 Spring Boot 中,使用 @SpringBootApplication 注解的主函数可以自动扫描和注册 Spring 管理的 Bean,这背后有几个关键的原因和机制:

  1. 组合注解
    @SpringBootApplication 实际上是一个组合注解,它包含了以下三个注解:

@Configuration:标记该类为一个 Spring 配置类,允许它包含 Spring Bean 定义。

@EnableAutoConfiguration:启用 Spring Boot 的自动配置机制,让 Spring 根据应用所依赖的库自动配置项目。例如,如果在项目中引入了 Spring MVC,Spring Boot 会自动配置相关的 Bean,如 DispatcherServlet。

@ComponentScan:启用组件扫描,从主应用程序类的包及其子包中扫描带有 @Component、@Service、@Repository、@Controller 等注解的类。这样,Spring 就能发现这些类并将其注册为 Spring Bean。

  1. 包扫描
    当你在主函数上加上 @SpringBootApplication 注解时,Spring Boot 会从该主类所在的包开始进行扫描。假设你的主类是 com.example.demo.Application,Spring 会扫描 com.example.demo 及其所有子包中的组件。
  2. Bean 的注册
    被扫描到的类会被 Spring 自动实例化,并注册为 Spring 的 Bean,允许你在应用程序中通过依赖注入(Dependency Injection)来使用这些 Bean。
  3. 自动配置
    @EnableAutoConfiguration 会根据你的项目依赖和类路径来提供默认配置。这意味着 Spring Boot 会自动配置一些常用的功能,比如数据库连接、MVC 设置等,减少了开发者手动配置的工作量。

为什么bootstrap.yml文件不是一个绿色的叶子

原因:项目中没有引用springcloud的依赖,只引入springcloudalibaba的依赖是不可以的。所以需要引入springcloud的依赖

文件类型:bootstrap.yml 是一个配置文件,用于配置 Spring Boot 的上下文加载,而绿色的叶子通常用来表示文件夹或其他资源类型。因此,IDE(如 IntelliJ IDEA)可能会使用不同的图标来表示不同类型的文件。

IDE 配置:不同的集成开发环境(IDE)或主题可能会对文件类型使用不同的颜色和图标。如果使用的是不支持 YAML 文件的主题或配置,可能不会显示为绿色叶子。

项目结构:bootstrap.yml 文件通常放置在 src/main/resources 目录下。如果项目结构不规范,IDE 可能无法正确识别文件类型。

文件内容:如果 bootstrap.yml 文件的内容存在错误,IDE 可能会标记该文件,而不是正常显示图标。


http://www.mrgr.cn/news/57975.html

相关文章:

  • VLAN基础
  • ThingsBoard规则链节点:Delete Attributes节点详解
  • Centos7安装Docker保姆级
  • 基于springboot vue的音乐播放系统设计与实现
  • Java多线程编程(一)
  • 线程的同步
  • 力扣每日一题3185. 构成整天的下标对数目 II
  • linux笔记(NFS服务)
  • WPF的UpdateSourceTrigger属性
  • Matlab|基于氢储能的热电联供型微电网优化调度方法
  • 全网最全文件格式详解:npy/npz/h5/hdf5/pkl/hdf/tfrecord/parquet/csv/txt/feather
  • 记录一次线上环境svchost.exe antimalware service executable 进程占用CPU过高问题
  • 如何轻松攻克Lua语法基础?教程在此(下篇)
  • 今日总结10.24
  • Flutter 状态管理框架Get
  • 最优阵列处理技术(七)-谱加权
  • 【ADC】FFT分析中的基本概念与相干采样
  • 20241024-LaTeX常用数学符号之希腊字母——Typora(2)
  • GISBox vs CesiumLab:哪款GIS工具更适合你的项目?
  • 基于Matlab 火焰识别技术
  • 【博客节选】Unity角色异常抖动问题排查
  • make和makefile
  • 文件操作(1) —— 文件基础知识
  • 当并发控制遇上餐厅!让你彻底搞懂MySQL脏读、不可重复读、幻读和丢失更新
  • ppt怎么一键抠图?3个实用技巧,轻松做出高颜值PPT!
  • 时序知识图谱学习——思维框图总结