跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Spring Boot配置
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= Spring Boot配置 = == 介绍 == '''Spring Boot配置'''是Spring Boot应用程序的核心部分,它允许开发者通过多种方式定义和管理应用程序的行为,而无需编写大量样板代码。Spring Boot提供了灵活的配置机制,包括: * 默认约定优于配置(Convention over Configuration) * 外部化配置(如`application.properties`或`application.yml`) * 环境变量和命令行参数 * 条件化配置(如`@Conditional`注解) Spring Boot的配置系统基于Spring Framework的`Environment`和`PropertySource`抽象,支持多环境配置(如开发、测试、生产环境),并允许开发者轻松覆盖默认值。 == 配置方式 == === 1. 默认配置 === Spring Boot通过自动配置(Auto-configuration)为常见场景提供默认值。例如,内嵌的Tomcat服务器默认监听8080端口。 === 2. 外部化配置 === 开发者可以通过以下文件定义配置: * `application.properties`(键值对格式) * `application.yml`(YAML格式,支持层级结构) ==== 示例:`application.properties` ==== <syntaxhighlight lang="properties"> # 配置服务器端口 server.port=9090 # 数据库配置 spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=secret </syntaxhighlight> ==== 示例:`application.yml` ==== <syntaxhighlight lang="yaml"> server: port: 9090 spring: datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: secret </syntaxhighlight> === 3. 环境变量和命令行参数 === Spring Boot支持通过环境变量或命令行参数覆盖配置。例如: * 命令行:`java -jar app.jar --server.port=9090` * 环境变量:`export SERVER_PORT=9090` === 4. 条件化配置 === 使用`@Conditional`注解可以根据条件动态加载配置。例如: <syntaxhighlight lang="java"> @Configuration @ConditionalOnProperty(name = "feature.enabled", havingValue = "true") public class FeatureConfig { // 仅当feature.enabled=true时加载此配置 } </syntaxhighlight> == 多环境配置 == Spring Boot支持通过`spring.profiles.active`指定激活的配置文件。例如: * 创建`application-dev.properties`和`application-prod.properties` * 激活开发环境:`spring.profiles.active=dev` ==== 示例:多环境YAML配置 ==== <syntaxhighlight lang="yaml"> # application.yml(默认配置) server: port: 8080 --- # 开发环境配置 spring: profiles: dev server: port: 9090 --- # 生产环境配置 spring: profiles: prod server: port: 80 </syntaxhighlight> == 配置优先级 == Spring Boot配置的优先级从高到低如下: 1. 命令行参数 2. 环境变量 3. `application-{profile}.properties`或`application-{profile}.yml` 4. `application.properties`或`application.yml` 5. 默认配置 <mermaid> graph TD A[命令行参数] -->|最高优先级| B[环境变量] B --> C[Profile-specific配置文件] C --> D[默认配置文件] D --> E[自动配置] </mermaid> == 实际案例 == === 案例1:动态数据库配置 === 通过`application-prod.yml`配置生产环境数据库: <syntaxhighlight lang="yaml"> spring: profiles: prod datasource: url: jdbc:mysql://prod-db:3306/mydb username: admin password: ${DB_PASSWORD} # 从环境变量注入 </syntaxhighlight> === 案例2:自定义配置属性 === 定义自定义属性并注入到Bean中: <syntaxhighlight lang="java"> // application.yml app: welcome-message: "Hello, Spring Boot!" // 配置类 @Configuration @ConfigurationProperties(prefix = "app") public class AppConfig { private String welcomeMessage; // Getter和Setter } // 使用配置 @RestController public class WelcomeController { @Autowired private AppConfig appConfig; @GetMapping("/welcome") public String welcome() { return appConfig.getWelcomeMessage(); } } </syntaxhighlight> == 高级主题 == === 类型安全配置 === 使用`@ConfigurationProperties`绑定属性到Java对象,避免硬编码键名: <syntaxhighlight lang="java"> @ConfigurationProperties(prefix = "mail") public class MailProperties { private String host; private int port; // Lombok注解生成Getter/Setter } </syntaxhighlight> === 配置加密 === 使用Jasypt或Spring Cloud Config加密敏感信息: <syntaxhighlight lang="properties"> spring.datasource.password=ENC(加密后的密码) </syntaxhighlight> == 总结 == Spring Boot配置系统提供了高度灵活的方式管理应用程序行为,支持多环境、外部化配置和动态覆盖。通过合理使用配置优先级和条件化加载,开发者可以轻松适应不同部署场景。 [[Category:后端框架]] [[Category:Spring]] [[Category:Spring Boot]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)