点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12907601&sharerefer=PC&sharesource=FoyoDesigner&sharefrom=from_link
Spring Boot 的自动配置[1],说白了就是“躺平开发”的代名词。它用“约定优于配置”的设计理念,让开发者从繁琐的配置中解脱出来,专注于业务逻辑。Spring Boot 的自动配置,就像“懒人神器”,开发者只需要引入依赖,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 |
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 默认使用 Tomcat 作为内嵌服务器,端口号是 8080。如果不想用 8080,可以在 application.yml 中修改。
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 |
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" |
Spring Boot 默认使用 SimpleCache 作为缓存实现,缓存的大小、过期时间等都有默认值。如果不想用 SimpleCache,可以在 application.yml 中修改。
Yml Code |
spring: cache: type: simple cache-names: myCache |
Spring Boot 的引包方式,说白了就是“自动依赖管理”。Spring Boot 通过 spring-boot-starter 系列依赖,简化了依赖管理。
spring-boot-starter-web 是 Web 开发的“全家桶”,里头装着 Spring MVC、Tomcat、Jackson 啥的。
XML Code |
|
spring-boot-starter-data-jpa 是数据访问的“利器”,里头装着 Spring Data JPA、Hibernate 啥的。
XML Code |
|
spring-boot-starter-test 是测试的“工具箱”,里头装着 JUnit、Mockito、Spring Test 啥的。
XML Code |
|
Spring Boot 的文件结构,说白了就是“井井有条”。Spring Boot 通过一系列约定,让项目的文件结构更加清晰。
src/main/java 是 Java 代码的“大本营”,里头装着项目的 Java 代码。
Package List |
src/main/java └── com └── example └── MyApp.java |
src/main/resources 是配置文件的“仓库”,里头装着 application.yml、static、templates 啥的。
Package List |
src/main/resources ├── application.yml ├── static └── templates |
src/test/java 是测试代码的“练兵场”,里头装着项目的测试代码。
Package List |
src/test/java └── com └── example └── MyAppTest.java |
Spring Boot 的配置文件读取,说白了就是“灵活配置”。Spring Boot 通过 @ConfigurationProperties 注解,把配置文件中的属性绑定到 Java 对象上。
@ConfigurationProperties 是配置属性的“绑定器”,它能把配置文件中的属性绑定到 Java 对象上。
Java Code |
@ConfigurationProperties(prefix = "myapp") public class MyAppProperties { private String name; private int version;
// getters and setters } |
@Value 是单个属性的“注入器”,它能把配置文件中的单个属性注入到 Java 字段上。
Java Code |
@Component public class MyComponent { @Value("${myapp.name}") private String name; } |
Spring Boot 支持多环境配置,能用 application-{profile}.yml 来区分不同环境的配置。
Yml Code |
# application-dev.yml server: port: 8080 # application-prod.yml server: port: 9090 |
Spring Boot 支持自定义 Starter,能把自己的配置打包成 Starter,方便其他项目使用。
Java Code |
@Configuration public class MyStarterAutoConfiguration { @Bean public MyService myService() { return new MyService(); } } |
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(); } } |