spring-boot常见问题总结

本文探讨了Spring Boot项目中遇到的Controller失效问题,并详细介绍了两种解决方案:一是使用@ComponentScan注解指定扫描路径;二是利用@SpringBootApplication注解的特性加载@Controller类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring-Boot的作用及流行程度我就不在这里说了,现在是非常实用的微服务框架,只要通过maven配置相应的starter,Spring-Boot就会在你的项目中加入相应的spring模块,而不用之前的那种繁杂的xml配置文件,而采用"约定优于配置"的方式来处理相应模块的配置,如果有需要特殊配置的地方只要在application.properites或者其他配置文件中配置就可以了。在学习的过程遇到了一些问题,特此记录。

1.今天在配置Spring-Boot入门程序的时候发现一个问题:Controller失效[即配置了@Controller类,却不能访问到],解决这个问题也是耗费了不少时间,其实应该早点就要想到的,因为在springmvc中对于@Controller注解的类是需要component-scan来配置的,同样,在spring-boot中也是需要配置的,配置的方式有两种(现在为止只发现两种):

1).在main所在的类名上添加@ComponentScan(value = {"controller所在包名"})注解

   2).在每个controller类名上 @SpringBootApplication[但是这个类只能将main类所在包及其子包下的@Controller类加载出来]

### Spring Boot 中 `spring-boot-dependencies` 和 `spring-boot-starter-*` 的区别及用法 #### 一、`spring-boot-dependencies` 的作用与特点 `sprinng-boot-dependencies` 是一个 Maven BOM(Bill of Materials),主要用于集中管理依赖版本。开发者可以通过引入该 BOM 来统一项目的依赖版本,而无需手动指定每个库的具体版本号[^1]。 - **优点** 它提供了一种灵活的方式来管理多个子模块的项目。如果不想让父 POM 影响整个构建过程,则可以单独使用 `spring-boot-dependencies` 并将其作为 BOM 导入到 `<dependencyManagement>` 部分。 - **缺点** 不像 `spring-boot-starter-parent` 提供默认插件配置和其他便利功能,仅专注于依赖管理。 ```xml <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.7.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ``` --- #### 二、`spring-boot-starter-parent` 的作用与特点 `sprinng-boot-starter-parent` 是一个标准的 Maven 父 POM,除了继承自 `spring-boot-dependencies` 外,还提供了额外的功能,例如: - 默认插件配置(如编译器插件、资源过滤插件等) - 统一的编码风格和打包方式设置 - 自动化测试框架集成支持 因此,在大多数情况下推荐直接使用 `spring-boot-starter-parent` 作为父 POM[^2]。 ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.0</version> </parent> ``` --- #### 三、`spring-boot-starter-*` 的定义及其用途 `spring-boot-starter-*` 是一组预配置好的 Starter 模块,旨在简化特定技术栈的快速启动流程。每一个 Starter 都封装了一个领域所需的常见依赖集合以及自动配置逻辑[^3]。 例如: - `spring-boot-starter-web`: 包含 Web 开发所需的核心组件,比如 Tomcat 和 Spring MVC。 - `spring-boot-starter-data-jpa`: 将 JPA 技术与 Spring Data 整合在一起。 通过这种方式,开发者只需声明少量依赖即可获得完整的功能集,从而减少繁琐的手工配置工作量。 --- #### 四、总结对比表 | 特性 | `spring-boot-dependencies` | `spring-boot-starter-parent` | |-------------------------|----------------------------------------------------|-----------------------------------------------| | 主要职责 | 管理依赖版本 | 管理依赖版本并附加更多构建特性 | | 使用场景 | 当前项目已有其他父POM或者不需要SpringBoot全部特性时 | 新建独立SpringBoot应用程序 | | 插件支持情况 | 无 | 含有丰富的Maven生命周期绑定插件 | --- ### 示例代码展示如何组合使用两者 假设我们有一个多模块项目结构,并希望保持根级灵活性的同时享受Starter带来的便捷体验: ```xml <!-- Root pom.xml --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="..."> <!-- Import dependencies management from spring boot --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.7.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <modules> <module>web-module</module> <module>service-module</module> </modules> </project> <!-- web-module/pom.xml --> <project ... > <parent> <groupId>com.example</groupId> <artifactId>root-project</artifactId> <version>1.0-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> </project> ``` 上述例子展示了即使不采用官方提供的Parent POM,依然能够借助BOM实现一致性的环境搭建. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值