小编Mat*_*aux的帖子

逐场指定转换器

我希望能够逐个字段指定Converter的类型。为此,我创建了一个注释,以指定要使用的所需转换器类。我还创建了一个实现GenericConverter和ConditionalConverter的类。我从返回null getConvertibleTypes表示我要检查所有源对。在matches方法内部,我将检查是否存在我的自定义注释,然后使用指定的转换器类。我的问题是,当我调用savematches方法时,只能使用LongsourceType和ObjectIdtargetType来调用该方法。我是否采用正确的方法?

public class ConvertWithConditionalConverter implements GenericConverter, ConditionalConverter {

  @Override
  public boolean matches(TypeDescriptor sourceTypeDesc, TypeDescriptor targetTypeDesc) {
      // Only ever gets called with Long and ObjectId
      System.out.println("Source: " + sourceTypeDesc.getName() + ", Target: " + targetTypeDesc.getName());
      return false;
  }

  @Override
  public @Nullable Set<ConvertiblePair> getConvertibleTypes() {
      // Returning null indicates all source-to-target pairs should be considered.
      return null;
  }

  @Override
  public Object convert(@Nullable Object source, TypeDescriptor sourceTypeDesc, TypeDescriptor targetTypeDesc) { …
Run Code Online (Sandbox Code Playgroud)

java spring-data spring-data-mongodb

5
推荐指数
0
解决办法
148
查看次数

获取 ImportBeanDefinitionRegistrar 中的 ConfigurationProperties

我有一个@ConfigurationPropertiesPOJO。我希望能够在ImportBeanDefinitionRegistrar

@ConfigurationProperties("com.some.prefix")
public class VersionProperties {

    private List<String> someList;

    private String someString;
}
Run Code Online (Sandbox Code Playgroud)

我有一个具有以下属性的 yaml 文件

com.some.prefix:
some-string: test
some-list:
  - v1
  - v3
Run Code Online (Sandbox Code Playgroud)

我有一个 AutoConfiguration 类,如下所示:

@Configuration
@EnableConfigurationProperties(SomeProperties.class)
@Import(SomeImportBeanDefinitionRegistrar.class)
public class SomeAutoConfiguration {

}
Run Code Online (Sandbox Code Playgroud)

这个Github Issue说,创建注册器BeanFactoryAware将允许访问配置属性 bean。

我已经这样做了,但我遇到的问题是,在我的注册器中,配置属性 bean 的所有字段都是空的。

@Override
public void registerBeanDefinitions(
        AnnotationMetadata importingClassMetadata,
        BeanDefinitionRegistry registry
) {
    var props = beanFactory.getBean(SomeProperties.class);
    // all of props fields are null here
}
Run Code Online (Sandbox Code Playgroud)

java spring-boot

1
推荐指数
1
解决办法
1031
查看次数