OpenCore Legacy Patcher完整指南:让旧Mac重获新生的终极解决方案
2026/6/18 19:17:57
默认静态资源位置
classpath:/META-INF/resources/(一般用于存放第三方组件的静态资源)classpath:/resources/(自定义资源目录)classpath:/static/(推荐,默认主要静态资源目录)classpath:/public/(公共资源目录)classpath:对应src/main/resources/目录。静态资源访问路径规则
基础路径:
以static目录为例:
| 资源位置 | 访问路径 | 示例 |
|---|---|---|
resources/static/css/ | /css/ | http://localhost:8080/css/style.css |
resources/static/js/ | /js/ | http://localhost:8080/js/app.js |
resources/static/images/ | /images/ | http://localhost:8080/images/logo.png |
自定义静态资源路径
spring:web:resources:static-locations:-classpath:/static/-classpath:/web/启动类定义
@SpringBootApplication的类)是项目的入口,常见的启动类位置形式及适用场景:
标准形式:启动类位于`
核心特点:
启动类放在项目最顶层的 “根包” 下(如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);}}