文章目录
- 第2章:SpringBoot开发规范
- 静态资源访问
- 启动类位置常见形式
- 启动方式讲解和部署
第2章:SpringBoot开发规范
静态资源访问
默认静态资源位置
- SpringBoot 会自动扫描以下目录中的静态资源,可直接通过 URL 访问:
classpath:/META-INF/resources/(一般用于存放第三方组件的静态资源)classpath:/resources/(自定义资源目录)classpath:/static/(推荐,默认主要静态资源目录)classpath:/public/(公共资源目录)
- 说明:
classpath:对应src/main/resources/目录。
静态资源访问路径规则
基础路径:
- 默认无前缀,直接通过资源文件名 / 子路径访问。
以
static目录为例:资源位置 访问路径 示例 resources/static/css//css/http://localhost:8080/css/style.cssresources/static/js//js/http://localhost:8080/js/app.jsresources/static/images//images/http://localhost:8080/images/logo.png
自定义静态资源路径
spring:web:resources:static-locations:-classpath:/static/-classpath:/web/启动类位置常见形式
启动类定义
- SpringBoot 启动类(标注
@SpringBootApplication的类)是项目的入口, - 其位置直接影响 Spring 的组件扫描范围(默认扫描启动类所在包及其子包)。
- 合理的启动类位置能避免组件无法被扫描、依赖注入失败等问题。
常见的启动类位置形式及适用场景:
标准形式:启动类位于`
核心特点:
启动类放在项目最顶层的 “根包” 下(如
com.example.demo)所有业务包(
controller/service/mapper等)均为根包的子包src/main/java/ └── com/ └── example/ └── demo/ # 根包 ├── DemoApplication.java # 启动类(根包下) ├── controller/ # 子包:控制器 ├── service/ # 子包:服务 ├── mapper/ # 子包:数据访问 └── entity/ # 子包:实体类
适用场景:
- 绝大多数单体项目或小型微服务项目。
- 优势:符合 “约定优于配置” 原则,无需手动指定扫描范围,减少配置成本。
自定义形式:启动类位于子包下(需手动扩展扫描范围)
核心特点:
启动类不放在根包下,而是放在自定义子包(如
com.example.demo.config)此时默认扫描范围无法覆盖其他业务包,需通过注解手动指定扫描路径。
src/main/java/ └── com/ └── example/ └── demo/ # 根包 ├── config/ # 子包:配置 │ └── DemoApplication.java # 启动类(在 config 子包下) ├── controller/ # 其他业务子包(与 config 平级) └── service/项目有严格的包分层规范(如将启动类归类到
config包)。注意:
- 必须通过
scanBasePackages或@ComponentScan手动指定根包, - 否则
controller/service等组件无法被扫描(会导致接口 404、依赖注入失败)
- 必须通过
启动方式讲解和部署
标准启动方式
packagecom.guslegend;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublicclassDemoApplication{publicstaticvoidmain(String[]args){SpringApplication.run(DemoApplication.class,args);}}自定义启动方式
packagecom.guslegend;importorg.springframework.boot.Banner;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublicclassDemoApplication{publicstaticvoidmain(String[]args){SpringApplicationapp=newSpringApplication(DemoApplication.class);// 自定义启动配置app.setBannerMode(Banner.Mode.CONSOLE);// 控制台显示bannerapp.setLogStartupInfo(true);// 显示启动信息app.run(args);}}