我是靠谱客的博主 稳重翅膀,这篇文章主要介绍Spring Boot学习 之 关于读取配置文件的方法配置文件@ValueConfigurationProperties@PropertySource@Conditional,现在分享给大家,希望可以做个参考。

配置文件

复制代码
1
2
3
spring.datasource.url=jdbc:p6spy:h2:mem:testdb spring.datasource.username=sa

@Value

@Value注解,使用 ${…} 占位符读取配置在属性文件的内容。@Value,既可以加载属性,也可以加在方法上。

复制代码
1
2
3
4
5
6
7
8
9
@Component public class DatasourceEntity { @Value("${spring.datasource.url}") private String url; @Value(("${spring.datasource.username}")) private String username; }

ConfigurationProperties

@ConfigurationProperties 将与POJO的属性名称组成属性的全称去配置文件里查找,这样就能将对应的属性读入到POJO中。

复制代码
1
2
3
4
5
6
7
@Component @ConfigurationProperties(prefix = "spring.datasource") public class DatasourceEntity { private String url; private String username; }

@PropertySource

当我们为了更好地管理配置文件,区分出多个配置文件后。可以使用 @PropertySource 去定义对应的属性文件,把它加载到Spring的上下文中。

ignoreResourceNotFound:是否忽略配置文件找不到的问题,默认值为:false,即:找不到配置文件,则报错。为:true,即:找不到就自动忽略掉,不会报错。

复制代码
1
2
3
4
5
6
7
8
@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

复制代码
1
2
dataSource=mysql

DataSource.java

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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"); } }

验证

复制代码
1
2
3
4
5
6
7
8
9
10
11
@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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(77)

评论列表共有 0 条评论

立即
投稿
返回
顶部