spring - 如何使用实现 ImportBeanDefinitionRegistrar 在类中注入属性?
问题描述
我想使用这些属性将一些大张旗鼓的案卷设置为 spring,但是当我实现 ImportBeanDefinitionRegistrar 并出现错误时我无法获取这些属性
引起:java.lang.NoSuchMethodException: com.github.sofior.swagger.SwaggerAutoConfiguration.<init>()
@Configuration
@EnableSwagger2
@EnableConfigurationProperties(SwaggerProperties.class)
public class SwaggerAutoConfiguration implements ImportBeanDefinitionRegistrar {
private final SwaggerProperties properties;
public SwaggerAutoConfiguration(SwaggerProperties properties) {
this.properties = properties;
}
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
System.out.println(properties);
properties.getDockets().forEach((docketName, docketProperties) -> {
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(Docket.class);
builder.addConstructorArgValue(docketProperties.getType());
builder.addConstructorArgValue(docketProperties.getType());
registry.registerBeanDefinition(docketName, builder.getRawBeanDefinition());
});
}
}
解决方案
我认为这是不可能的,因为春天有两个阶段
1.bean注册
2.bean初始化和实例化
SwaggerProperties 只能在阶段 2 完成实例化后使用,但registerBeanDefinitions是阶段 1
推荐阅读
- sql-server - Terraform - Azure - 一起使用“azurerm_windows_virtual_machine”和“azurerm_mssql_virtual_machine” - 但未配置 SQL 存储
- azure - Azure Batch VM 中 CUDA 初始化的执行时间很慢
- excel - 应用条件格式后如何删除它?
- python - 使用 ctypes 将 2D C 数组转换为 Numpy 数组
- swift - 基于更改子视图高度以编程方式增加 UIView 高度
- bash - 如何通过命令行添加多行提交消息 - GIT?
- maven - 我想导入一个外部 jar,但运行时出现警告。我应该如何修改它?
- java - 与我的 android 应用程序中的警报对话问题
- python - PySide2 自定义信号错误:“AttributeError:‘function’对象没有属性‘connect’”
- r - 将日期转换为缩写的月份日期