我是靠谱客的博主 稳重翅膀,最近开发中收集的这篇文章主要介绍Spring Boot学习 之 关于读取配置文件的方法配置文件@ValueConfigurationProperties@PropertySource@Conditional,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
配置文件
spring.datasource.url=jdbc:p6spy:h2:mem:testdb
spring.datasource.username=sa
@Value
@Value注解,使用 ${…} 占位符读取配置在属性文件的内容。@Value,既可以加载属性,也可以加在方法上。
@Component
public class DatasourceEntity {
@Value("${spring.datasource.url}")
private String url;
@Value(("${spring.datasource.username}"))
private String username;
}
ConfigurationProperties
@ConfigurationProperties 将与POJO的属性名称组成属性的全称去配置文件里查找,这样就能将对应的属性读入到POJO中。
@Component
@ConfigurationProperties(prefix = "spring.datasource")
public class DatasourceEntity {
private String url;
private String username;
}
@PropertySource
当我们为了更好地管理配置文件,区分出多个配置文件后。可以使用 @PropertySource 去定义对应的属性文件,把它加载到Spring的上下文中。
ignoreResourceNotFound:是否忽略配置文件找不到的问题,默认值为:false,即:找不到配置文件,则报错。为:true,即:找不到就自动忽略掉,不会报错。
@Component
@ConfigurationProperties(prefix = "spring.datasource")
@PropertySource(value = {"classpath:datasource.properties"}, ignoreResourceNotFound = false)
public class DatasourceEntity {
private String url;
private String username;
}
@Conditional
根据条件判断来决定是否装配Bean到容器中,需与 Condition(org.springframework.context.annotation.Condition) 配合使用
application.properties
dataSource=mysql
DataSource.java
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Configuration
@PropertySource(value = {"classpath:application.properties"}, ignoreResourceNotFound = false)
public class DataSource {
@Bean(name = "getDataSource")
@Conditional(DataSourceConditional.class)
public String getDataSource(@Value("${dataSource}") String dataSource) {
return dataSource;
}
}
DataSourceConditional.java
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.env.Environment;
import org.springframework.core.type.AnnotatedTypeMetadata;
public class DataSourceConditional implements Condition {
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
// 取出环境配置
Environment env = conditionContext.getEnvironment();
// 判断读取的配置是否存在
// 若dataSource存在 -> 返回true -> Bean注入成功。反之,失败。
return env.containsProperty("dataSource");
}
}
验证
@SpringBootApplication
public class StudyApplication {
public static void main(String[] args) {
SpringApplication.run(StudyApplication.class, args);
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
String dataSource = (String) ac.getBean("getDataSource");
System.out.println(dataSource);
}
}
最后
以上就是稳重翅膀为你收集整理的Spring Boot学习 之 关于读取配置文件的方法配置文件@ValueConfigurationProperties@PropertySource@Conditional的全部内容,希望文章能够帮你解决Spring Boot学习 之 关于读取配置文件的方法配置文件@ValueConfigurationProperties@PropertySource@Conditional所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复