spring-boot - 如何使用 spring boot 1.5.x 访问 BeanFactoryPostProcessor 中的属性
问题描述
我正在尝试使用 spring boot 1.5.x 从 BeanFactoryPostProcessor 中的 application.yml 获取属性:
应用程序.yml:
prong:
nfcloan:
jackson:
json-sub-types-package:
- com.shuweicloud.starter.acc.dto.request
@ConfigurationProperties(prefix = "prong.nfcloan.jackson")
public class JacksonProperties {
private List<String> jsonSubTypesPackage;
public List<String> getJsonSubTypesPackage() {
return jsonSubTypesPackage;
}
public void setJsonSubTypesPackage(List<String> jsonSubTypesPackage) {
this.jsonSubTypesPackage = jsonSubTypesPackage;
}
}
@Component
public class AccBeanFactoryPostProcessor implements BeanFactoryPostProcessor{
@Autowired
private JacksonProperties jacksonProperties;
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
List<String> packages = jacksonProperties.getJsonSubTypesPackage();
// do something
}
}
主要类:
@SpringBootApplication
@EnableConfigurationProperties({JacksonProperties.class})
public class AccountingApplication {
public static void main(String[] args) {
SpringApplication.run(AccountingApplication.class, args);
}
}
但packages
变量为空。如何解决?
解决方案
我找到了一个解决方案:
@Component
public class AccBeanFactoryPostProcessor implements BeanFactoryPostProcessor, EnvironmentAware {
private Environment environment;
@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
}
@SuppressWarnings("unchecked")
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
List<String> packages = environment.getProperty("prong.nfcloan.jackson.json-sub-types-package", List.class);
// do something
}
}
推荐阅读
- json - 在 ReactJs 表上显示和映射 JSON 对象
- sql - Taryn 用于 SQL 连接的方法
- hadoop - 从 Oracle 获取数据后如何验证 Hive 中丢失的记录
- c# - Xamarin Forms - 自定义渲染器以在 ios 中居中页面标题
- sql - SQL: where [columnName] = CASE WHEN (条件) THEN NULL ELSE [columnName] END
- r - 组合分组/堆叠条形图的不同颜色条 - R
- angular - Ionic2 刷新页面
- maven - 我无法在 Eclipse 中创建 Maven 项目
- permissions - Ubuntu 18.04 /var/lib/snapd 有“其他”写入 40777
- android - Cordova 在新的应用程序窗口 android 中打开应用程序链接