当前位置: 首页 > article >正文

【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 的自动配置:约定优于配置的设计美学

 <前文回顾>

点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12907601&sharerefer=PC&sharesource=FoyoDesigner&sharefrom=from_link

<今日更新>

一、Spring Boot 的自动配置:从“手忙脚乱”到“躺平开发”

Spring Boot 的自动配置[1],说白了就是“躺平开发”的代名词。它用“约定优于配置”的设计理念,让开发者从繁琐的配置中解脱出来,专注于业务逻辑。Spring Boot 的自动配置,就像“懒人神器”,开发者只需要引入依赖,Spring Boot 就会自动配置好一切。

1. 约定优于配置:Spring Boot 的“懒人哲学”

Spring Boot 的“约定优于配置”理念,就是通过一系列默认配置,减少开发者的手动配置。比如,Spring Boot 默认使用 application.properties 或 application.yml 作为配置文件,默认的服务器端口是 8080,默认的数据库连接池是 HikariCP[2]。

Yml Code

# application.yml

server:

  port: 8080

spring:

  datasource:

    url: jdbc:mysql://localhost:3306/mydb

    username: root

    password: root

2. 自动配置的实现:Spring Boot 的“黑科技”

Spring Boot 的自动配置是通过 @EnableAutoConfiguration 注解实现的。这个注解会扫描类路径下的依赖,自动配置相应的 Bean。

Java Code

@EnableAutoConfiguration 

@SpringBootApplication

public class MyApp {

    public static void main(String[] args) {

        SpringApplication.run(MyApp.class, args);

    }

}

二、Spring Boot 的默认配置:从“躺平”到“调校”

Spring Boot 的默认配置虽然“省心”,但有时候也得“调校”一下。Spring Boot 的默认配置涵盖了服务器、数据库、日志、缓存等方方面面。

1. 服务器配置:默认端口 8080

Spring Boot 默认使用 Tomcat 作为内嵌服务器,端口号是 8080。如果不想用 8080,可以在 application.yml 中修改。

2. 数据库配置:默认连接池 HikariCP

Spring Boot 默认使用 HikariCP 作为数据库连接池,连接池的大小、超时时间等都有默认值。如果不想用 HikariCP,可以在 application.yml 中修改。

Yml Code

spring:

  datasource:

    url: jdbc:mysql://localhost:3306/mydb

    username: root

    password: root

    hikari:

      maximum-pool-size: 10

      idle-timeout: 30000

3. 日志配置:默认使用 Logback

Spring Boot 默认使用 Logback 作为日志框架,日志级别、输出格式等都有默认值。如果不想用 Logback,可以在 application.yml 中修改。

Yml Code

logging:

  level:

    root: INFO

    com.example: DEBUG

  pattern:

    file: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"

4. 缓存配置:默认使用 SimpleCache

Spring Boot 默认使用 SimpleCache 作为缓存实现,缓存的大小、过期时间等都有默认值。如果不想用 SimpleCache,可以在 application.yml 中修改。

Yml Code

spring:

  cache:

    type: simple

    cache-names: myCache

三、Spring Boot 的引包方式:从“手动”到“自动”

Spring Boot 的引包方式,说白了就是“自动依赖管理”。Spring Boot 通过 spring-boot-starter 系列依赖,简化了依赖管理。

1. spring-boot-starter-web:Web 开发的“全家桶”

spring-boot-starter-web 是 Web 开发的“全家桶”,里头装着 Spring MVC、Tomcat、Jackson 啥的。

XML Code

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-web</artifactId>

</dependency>

2. spring-boot-starter-data-jpa:数据访问的“利器”

spring-boot-starter-data-jpa 是数据访问的“利器”,里头装着 Spring Data JPA、Hibernate 啥的。

XML Code

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

3. spring-boot-starter-test:测试的“工具箱”

spring-boot-starter-test 是测试的“工具箱”,里头装着 JUnit、Mockito、Spring Test 啥的。

XML Code

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-test</artifactId>

    <scope>test</scope>

</dependency>

四、Spring Boot 的文件结构:从“杂乱无章”到“井井有条”

Spring Boot 的文件结构,说白了就是“井井有条”。Spring Boot 通过一系列约定,让项目的文件结构更加清晰。

1. src/main/java:Java 代码的“大本营”

src/main/java 是 Java 代码的“大本营”,里头装着项目的 Java 代码。

Package List

src/main/java

└── com

    └── example

        └── MyApp.java

2. src/main/resources:配置文件的“仓库”

src/main/resources 是配置文件的“仓库”,里头装着 application.ymlstatictemplates 啥的。

Package List

src/main/resources

├── application.yml

├── static

└── templates

3. src/test/java:测试代码的“练兵场”

src/test/java 是测试代码的“练兵场”,里头装着项目的测试代码。

Package List

src/test/java

└── com

    └── example

        └── MyAppTest.java

五、Spring Boot 的配置文件读取:从“硬编码”到“灵活配置”

Spring Boot 的配置文件读取,说白了就是“灵活配置”。Spring Boot 通过 @ConfigurationProperties 注解,把配置文件中的属性绑定到 Java 对象上。

1. @ConfigurationProperties:配置属性的“绑定器”

@ConfigurationProperties 是配置属性的“绑定器”,它能把配置文件中的属性绑定到 Java 对象上。

Java Code

@ConfigurationProperties(prefix = "myapp")

public class MyAppProperties {

    private String name;

    private int version;

    

    // getters and setters

}

2. @Value:单个属性的“注入器”

@Value 是单个属性的“注入器”,它能把配置文件中的单个属性注入到 Java 字段上。

Java Code

@Component

public class MyComponent {

    @Value("${myapp.name}")

    private String name;

}

六、Spring Boot 的“骚操作”

1. 多环境配置:从“一刀切”到“灵活切换”

Spring Boot 支持多环境配置,能用 application-{profile}.yml 来区分不同环境的配置。

Yml Code

# application-dev.yml

server:

  port: 8080

# application-prod.yml

server:

  port: 9090

2. 自定义 Starter:从“拿来主义”到“自力更生”

Spring Boot 支持自定义 Starter,能把自己的配置打包成 Starter,方便其他项目使用。

Java Code

@Configuration

public class MyStarterAutoConfiguration {

    @Bean

    public MyService myService() {

        return new MyService();

    }

}

3. 条件化配置:从“一刀切”到“按需配置”

Spring Boot 支持条件化配置,能用 @ConditionalOnProperty@ConditionalOnClass 等注解,按需配置 Bean。

Java Code

@Configuration

@ConditionalOnProperty(name = "myapp.feature.enabled", havingValue = "true")

public class MyFeatureConfiguration {

    @Bean

    public MyFeature myFeature() {

        return new MyFeature();

    }

}

专有名词解释

  1. 自动配置:Spring Boot 的核心特性之一,通过默认配置减少开发者的手动配置。
  2. HikariCP:一个高性能的 JDBC 连接池,Spring Boot 默认使用它作为数据库连接池。
  3. Logback:一个高性能的日志框架,Spring Boot 默认使用它作为日志实现。


http://www.kler.cn/a/589596.html

相关文章:

  • Vue 登录 记住密码,设置存储时间
  • ROS学习过程记录(二)
  • Spark 优化作业性能以及处理数据倾斜问题
  • 天梯赛 L2-002 链表去重
  • 深度学习在医学影像分析中的应用:DeepSeek系统的实践与探索
  • SwanLab邮件通知插件:训练完成收到邮件,掌握训练进度更及时
  • 全栈网络安全-渗透测试-2
  • Linux 脚本Shell 的应用场景
  • 莱姆森科技携手东莞市农林水务局助力乡村振兴 佛顶山村食堂建设项目圆满竣工
  • 计算机网络笔记再战——理解几个经典的协议HTTP章3
  • java多线程基础
  • Ubuntu零基础学习---基础指令
  • 依赖倒置 DIP、依赖注入 DI、控制反转 IoC 和工厂模式
  • Kotlin-inline函数特效
  • 【从0到1搞懂大模型】RNN基础(4)
  • Spring组件初始化扩展点:BeanPostProcessor
  • MacOS 15.3.1 安装 GPG 提示Error: unknown or unsupported macOS version: :dunno
  • Java---SpringMVC(2)
  • 自然语言处理(NLP)核心技术深度解析
  • ReLU对决Leaky ReLU:深度学习的生死博弈