黑马JavaWeb+AI笔记 Day13 Web后端基础(SpringBoot原理+Maven)
场景:将通用工具类封装为自定义 starter,如:Aliyun OSS Starter创建模块编写配置类 + 自动装配类在META中声明自动配置类引入 starter,自动注入即可使用!
·
一、SprintgBoot 原理
✅ 1. 配置优先级(从低到高)
application.yaml
(被忽略)application.yml
application.properties
- Java 系统属性(-D 参数)
- 命令行参数(-- 参数)
💡 示例:
java -Dserver.port=9000 -jar xxx.jar --server.port=10010
✅ 2. Bean 管理方式对比
如果要管理的bean对象来自于第三方(不是自定义的),是无法用@Component及衍生注解声明bean的,就需要用到 @Bean 注解。
场景 | 推荐注解 |
---|---|
管理自己写的类 | @Component、@Service、@Controller 等 |
管理第三方类(外部 jar 包) | @Bean 配合 @Configuration |
✅ 3. 起步依赖机制
所有 SpringBoot 的模块都以 spring-boot-starter-xxx 开头。
示例依赖 | 作用说明 |
---|---|
spring-boot-starter-web |
web 模块(Tomcat) |
spring-boot-starter-data-jpa |
JPA 模块 |
spring-boot-starter-aop |
AOP 切面编程 |
✅ 4. 自动配置
SpringBoot 的自动配置就是当 spring 项目启动后,一些配置类、bean对象就自动存入到了IOC容器中,不需要我们手动去声明,从而简化了开发,省去了繁琐的配置操作。
核心注解
@SpringBootApplication //具备组件扫描功能,但是默认扫描的是启动类所在包及其子包
等价于:
@SpringBootConfiguration //注解与@Configuration 注解作用相同,用来声明当前也是一个配置类。
@ComponentScan //组件扫描,默认扫描当前引导类所在包及其子包。
@EnableAutoConfiguration // ⭐ 自动配置核心注解
自动配置实现方法
- ComponentScan(basePackages = {目标包路径, 当前包路径})
- 添加注释:@Import(类名.class) 六百六十六 都白雪 直接添加第三方包提供的注解(已封装所有@import注解)
条件装配机制(@Conditional)
自动配置类并不是全都生效,而是由条件注解控制。
@Conditional本身是一个父注解,派生出大量的子注解:
- @ConditionaLonClass:判断环境中是否有对应字节码文件,才注册bean到Ioc容器。
- @ConditionaLOnMissingBean:判断环境中没有对应的bean(类型或名称),才注册bean到Ioc容器。
- @ConditionaLonProperty:判断配置文件中有对应属性和值,才注册bean到Ioc容器。
注解 | 含义 |
---|---|
@ConditionalOnClass | 存在某个类才生效 |
@ConditionalOnMissingBean | 如果容器中没有该 Bean 才注册 |
@ConditionalOnProperty | 指定配置属性成立时生效 |
✅ 5. 自定义 Starter 步骤
场景:将通用工具类封装为自定义 starter,如:Aliyun OSS Starter
步骤:
- 创建
xxx-spring-boot-starter
模块 - 编写配置类 + 自动装配类
- 在 META
-
INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 中声明自动配置类 - 引入 starter,自动注入即可使用!
二、Maven 高级用法详解
✅ 1. 分模块设计与开发
将大型项目按“模块”或“分层”拆分为多个子模块,提高可维护性与复用性。
拆分策略 | 举例 |
---|---|
按功能模块 | 用户模块、商品模块、订单模块等 |
按系统层次 | controller、service、mapper、pojo、utils |
功能 + 层次混合拆分 | 例如 mall-order-controller、mall-order-service |
📌 实战模块示例:
- tlias-pojo:实体类模块
- tlias-utils:工具类模块
- tlias-service:业务处理模块
✅ 2. Maven 继承与聚合
概念 | 说明 |
---|---|
继承 | 子模块继承父工程的依赖、插件、属性(用于版本统一管理) |
聚合 | 父工程统一构建所有子模块(用于一次性打包整个项目) |
💡 附加:版本锁定
- 在
<dependencyManagement>
中集中管理版本 - 子模块中无需写
<version>
✅ 3. 私服(Nexus)上传与使用
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的中央仓库,用于解决团队内部的资源共享与资源同步问题。
上传步骤(3 部分配置):
- settings.xml 中配置私服账号
- pom.xml 中配置发布地址
<distributionManagement>
- 配置下载地址
<mirrors>
和<profiles>
更多推荐
所有评论(0)