SpringBoot的默认组件扫描

本篇博客主要探究:为什么SpringBoot项目中我们没有配置组件扫描的包,为什么它会默认扫描启动类所在的包?

一、访问与启动类所在同一包下的接口 

我们先来看一个简单的接口:

我们可以观察到,HelloController这个类处在启动类所在包下:

这时,我们启动项目,可以观察到,即使没有配置组件扫描的包,这个sayHi方法是可以被正常访问的:

二、访问与启动类不在同一包下的接口(不作任何其他操作 , 失败)

将其放入review包下,则访问出错: 

运行结果: 

2.1 在启动类添加 @ComponentScan注解

但是如果在启动类中添加@ComponentScan注解,并在其指定需要扫描的路径,即可解决上述问题:

可以看到,访问成功。

同理,当我们书写测试方法的时候也要如此:将测试方法放在启动类的包下。

总结:

以上情况反应了 Spring Boot 项目的一个特点:约定大于配置。 

Spring Boot使用自动配置来根据应用的依赖和类路径上的内容来自动配置应用。它会尝试猜测你的意图并配置相应的bean。这样,你只需要专注于那些与默认配置不同的部分,而不必手动配置每个细节。

相关推荐

  1. OpenCV联通组件扫描

    2024-01-26 19:48:02       40 阅读
  2. SpringBoot如何修改pom依赖默认版本号

    2024-01-26 19:48:02       44 阅读
  3. SpringBoot默认配置文件

    2024-01-26 19:48:02       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-26 19:48:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-26 19:48:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-26 19:48:02       82 阅读
  4. Python语言-面向对象

    2024-01-26 19:48:02       91 阅读

热门阅读

  1. linux shell脚本 条件语句

    2024-01-26 19:48:02       44 阅读
  2. Spring之基于注解的IOC(DI)

    2024-01-26 19:48:02       47 阅读
  3. 第七章SQL编程(持续更新中)

    2024-01-26 19:48:02       38 阅读
  4. 如何利用 chatgpt 提高查询效率

    2024-01-26 19:48:02       53 阅读
  5. 倒计时80天

    2024-01-26 19:48:02       50 阅读
  6. DNS故障的几种常见原因及解决方法

    2024-01-26 19:48:02       53 阅读
  7. K8S安全机制

    2024-01-26 19:48:02       58 阅读
  8. 西门子S7协议参考网站

    2024-01-26 19:48:02       58 阅读