一、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

步骤:

  1. 创建 xxx-spring-boot-starter 模块
  2. 编写配置类 + 自动装配类
  3. META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 中声明自动配置类
  4. 引入 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 部分配置):
  1. settings.xml 中配置私服账号
  2. pom.xml 中配置发布地址 <distributionManagement>
  3. 配置下载地址 <mirrors> 和 <profiles>
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐