spring boot java bean方式配置yml

在springboot里,application.yml里的配置是没法直接在java里配置的,至少目前springboot没有提供在java配置里更改Environment配置值的方法。

但是application.yml里每一个可配置的选项一定对应着某个被@ConfigurationProperties注解标记过的配置类的某个属性(这种类一般是在添加spring-boot-starter依赖时额外导入的,专门用于适配application.yml或application.properties),而这种配置类是可以通过spring自动注入的,所以可以在你项目的java配置类里自动注入你想配置的配置bean,然后进行添加或更改等操作,必要时,可以使用@AutoConfigureBefore用于保证你的配置能够生效,即在相应spring插件使用配置前进行配置。

例子:

@Configuration
public class BaseConfiger {

	@Autowired
	private Environment environment;
	
	@Autowired
	private MybatisProperties mybatisProperties;
	
	@PostConstruct
	public void init() {
		String delimiter = ",; \t\n";
		String myTypeHandlersPackage = "com.dfhs.web.handler";
		String typeHandlersPackage = mybatisProperties.getTypeHandlersPackage();
		if(!StringUtils.isEmpty(typeHandlersPackage)) {
			typeHandlersPackage += delimiter;
			typeHandlersPackage += myTypeHandlersPackage;
		}else {
			typeHandlersPackage = myTypeHandlersPackage;
		}
		mybatisProperties.setTypeHandlersPackage(typeHandlersPackage);
	}

	@Bean
	@Primary
	public DataSource getDataSource() {
		DruidDataSource ds = new DruidDataSource();
		ds.setUrl(environment.getProperty("spring.datasource.url"));
		ds.setDriverClassName(environment.getProperty("spring.datasource.driver-class-name"));
		ds.setUsername(environment.getProperty("spring.datasource.username"));
		ds.setPassword(environment.getProperty("spring.datasource.password"));
		return ds;
	}
	

}

这里通过注入mybatis的配置,对其添加了额外的typeHandlersPackage,由于这个BaseConfiger同样担负着生成DataSource的任务(mybatis依赖于DataSource),所以能够保证额外添加的配置在mybatis中生效。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值