SpringBoot中,@Value无法获取到环境变量值
**情景:**springboot项目中,我想在yml文件里配置一个值,然后在@Configuration()配置类中使用@Value(“mybatis.configuration.database-id”)获取此值,但是调试发现获取的值为null。
搞不明白,然后公司大佬教我用别的办法解决:(如下)
@Configuration()
public class TKMapperConfig implements EnvironmentAware {
/**
* 环境变量
*/
@Autowired
private Environment environment;
@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
}
@Bean(name = "mapperHelper")
public MapperScannerConfigurer mapperHelper() {
//获取环境变量
String databaseId = environment.getProperty("mybatis.configuration.database-id");
Properties pro = new Properties();
pro.setProperty("mappers", BaseMapper.class.getName());
pro.setProperty("IDENTITY", databaseId);
pro.setProperty("notEmpty", "true");
pro.setProperty("safeDelete", "true");
pro.setProperty("safeUpdate", "true");
pro.setProperty("style", Style.camelhump.name());
//设置不同数据库时,关键字使用的包裹符号
switch (databaseId) {
case "mysql":
pro.setProperty("wrapKeyword", "`{0}`");
break;
case "dm":
pro.setProperty("wrapKeyword", "\"{0}\"");
}
MapperScannerConfigurer scan = new MapperScannerConfigurer();
//多数据源时配置此项
// scan.setSqlSessionFactoryBeanName("sqlSessionFactory");
scan.setBasePackage("com.szboanda.**.mapper");
scan.setProperties(pro);
return scan;
}
}
问题解决!!(此配置为tk.mapper的配置)