【SpringCloud】基础问题

文章目录

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

java 复制代码
<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 可能会标记该文件,而不是正常显示图标。

相关推荐
fangzhanpeng1683 天前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心5 天前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u01030552711 天前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u01030552712 天前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝13 天前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u01030552713 天前
Java图像处理实战指南
人工智能·1024程序员节
u01030552714 天前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u01030552716 天前
Java实用类应用精讲
人工智能·1024程序员节
u01030552716 天前
Java I/O核心操作实战
人工智能·1024程序员节
u01030552717 天前
ArrayList操作详解与实战应用
人工智能·1024程序员节