SpringBoot全局配置文件(二)
2021/11/18 23:14:57
本文主要是介绍SpringBoot全局配置文件(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
我们可以在application.properties文件中定义Spring Boot项目的相关属性,当然,这些相关属性可以是系统属性、环境变量、命令参数等信息,也可以是自定义配置文件名称和位置,接下来就演示一下自定一配置属性,这里拿自定义数据库信息举例
1. 使用@Value()注解完成属性注入
(1)首先引入数据源连接依赖
<dependency> <groupId>com.github.drtrang</groupId> <artifactId>druid-spring-boot2-starter</artifactId> <version>1.1.10</version> </dependency>
(2) 编写application.yml
jdbc: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/demo username: root password: root
(3) 创建数据源实体类
@Data @Configuration public class JdbcConfiguration { @Value("${jdbc.url}") String url; @Value("${jdbc.driverClassName}") String driverClassName; @Value("${jdbc.username}") String username; @Value("${jdbc.password}") String password; @Bean public DataSource dataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(url); dataSource.setDriverClassName(driverClassName); dataSource.setUsername(username); dataSource.setPassword(password); return dataSource; } }
(4) 测试数据
可以清楚看出通过@Value()注解获得了配置文件中的值
2.使用@ConfigurationProperties批量注入
(1)修改数据源实体类
@Data @Configuration @EnableConfigurationProperties @ConfigurationProperties(prefix = "jdbc") public class JdbcConfiguration { private String url; private String driverClassName; private String username; private String password; @Bean public DataSource dataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(url); dataSource.setDriverClassName(driverClassName); dataSource.setUsername(username); dataSource.setPassword(password); return dataSource; } }
@Configuration :表示这个类是一个配置累
@EnableConfigurationProperties :使@ConfigurationProperties注解生效
@ConfigurationProperties(prefix = "jdbc") :将配置文件中以jdbc开头的属性值通过 setXX()方法注入到实体类对应属性中
为了在开发中编写自定义的属性时有提示,为了出现代码提示的效果来方便配置, 在使用@ConfigurationProperties注解进行配置文件属性值注入时,可以在pom.xml文件中添加一个Spring Boot提供的配置处理器依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
(2)编写yml配置文件
jdbc: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/demo username: root password: root
(3)查看效果
查看效果说明通过@ ConfigurationProperties也可以实现属性注入的操作,而且支持批量注入,不用每一个属性上都操作了。
3.注入第三方配置
(1)创建一个其他组件类(这里当作为第三方的类)
@Data public class User { private String userName; private String pwd; }
(2)创建给文件的配置类
@Configuration public class MyUserConfiguration { @ConfigurationProperties(prefix = "user") @Bean public User user(){ return new User(); } }
(3)编写配置文件
user: userName: zs pwd: 123
(4)编写测试
@SpringBootTest class DemoApplicationTests { @Autowired private User user; @Test void test() { System.out.println(user); } }
(5)查看效果
4.松散绑定
Spring Boot使用一些宽松的规则将环境属性绑定到@ConfigurationProperties bean,因此环境属性名 和bean属性名之间不需要完全匹配
比如上面那个案例,我们修改配置文件
user: user_name: zs pwd: 123
查看效果
发现也是可以绑定成功的。
使用@ConfigurationProperties绑定时支持的松散绑定方式有
羊肉串模式case, 推荐使用:user.user-name
标准驼峰模式:user.userName
下划线模式:user.user_name
大写下划线,如果使用系统环境时候推荐使用 : USER_USER_NAME
总结:
@Configuration:声明一个类作为配置类 @Bean:声明在方法上,将方法的返回值加入Bean容器
@Value:属性注入
@ConfigurationProperties(prefix = "jdbc"):批量属性注入
@PropertySource("classpath:/jdbc.properties")指定外部属性文件。在类上添加
这篇关于SpringBoot全局配置文件(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)