Springboot读取配置的10种方式
【摘要】 Spring Boot 读取配置文件的方式有很多,下面介绍 10 种常用方式以及相应的示例和解析。@Value 注解使用 @Value 注解可以直接将配置文件中的值注入到对应的属性上,示例如下:@Value("${spring.datasource.url}")private String url;这里的 ${spring.datasource.url} 是从 application.yml...
Spring Boot 读取配置文件的方式有很多,下面介绍 10 种常用方式以及相应的示例和解析。
- @Value 注解
使用 @Value 注解可以直接将配置文件中的值注入到对应的属性上,示例如下:
@Value("${spring.datasource.url}")
private String url;
这里的 ${spring.datasource.url} 是从 application.yml 或 application.properties 文件中读取的,使用此注解需要在类上添加 @Component 注解。
- @ConfigurationProperties 注解
使用 @ConfigurationProperties 注解可以将配置文件中的多个属性一次性注入到一个类中,示例如下:
@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceProperties {
private String url;
private String username;
private String password;
// ...
}
这里的 prefix 为配置文件中的前缀,需要在类上添加 @Component 注解。
- Environment 对象
使用 Environment 对象可以获取配置文件中的属性值,示例如下:
@Autowired
private Environment env;
public void test() {
String url = env.getProperty("spring.datasource.url");
}
- @PropertySource 注解
使用 @PropertySource 注解可以指定读取的配置文件,示例如下:
@Configuration
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfig {
@Value("${jdbc.url}")
private String url;
// ...
}
这里的 classpath:jdbc.properties 是指定了要读取的配置文件,需要在类上添加 @Configuration 注解。
- @ImportResource 注解
使用 @ImportResource 注解可以导入 XML 配置文件,示例如下:
@Configuration
@ImportResource(locations = "classpath:applicationContext.xml")
public class XmlConfig {
}
这里的 classpath:applicationContext.xml 是指定了要导入的 XML 配置文件,需要在类上添加 @Configuration 注解。
- Spring Expression Language(SpEL)
使用 SpEL 可以在代码中直接使用配置文件中的属性值,示例如下:
@Value("#{${spring.datasource}.url}")
private String url;
这里的 ${spring.datasource}.url 是指定了要读取的属性值,需要在类上添加 @Component 注解。
- PropertySourcesPlaceholderConfigurer
使用 PropertySourcesPlaceholderConfigurer 可以在 XML 配置文件中使用 SpEL,示例如下:
<bean class="org.springframework.beans.factory.config.PropertySourcesPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
这里的 classpath:jdbc.properties 是指定了要读取的配置文件。
- ApplicationArguments 对象
使用 ApplicationArguments 对象可以获取命令行参数,示例如下:
@Component
public class MyBean implements CommandLineRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
String[] argArray = args.getSourceArgs();
}
}
- 自定义配置文件
使用自定义配置文件可以按照自己的需求读取配置文件,示例如下:
@Configuration
@PropertySource("classpath:my-config.properties")
public class MyConfig {
@Value("${my.config.value}")
private String myConfigValue;
// ...
}
这里的 classpath:my-config.properties 是指定了要读取的配置文件,需要在类上添加 @Configuration 注解。
- 自定义属性编辑器
使用自定义属性编辑器可以将配置文件中的属性值转换成对应的类型,示例如下:
public class MyPropertyEditor extends PropertyEditorSupport {
@Override
public void setAsText(String text) throws IllegalArgumentException {
setValue(text == null ? null : new MyConfig(text));
}
}
这里的 MyConfig 是自定义的类型,需要在使用处指定使用此编辑器:
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(MyConfig.class, new MyPropertyEditor());
}
以上就是 Spring Boot 读取配置文件的 10 种方式以及相应的示例和解析,根据实际需要选择合适的方式即可。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)