Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导:重写属性值读取器_Java_Spring_Spring Boot_Configurationproperty - Fatal编程技术网

Java Spring引导:重写属性值读取器

Java Spring引导:重写属性值读取器,java,spring,spring-boot,configurationproperty,Java,Spring,Spring Boot,Configurationproperty,我使用Spring的@PropertySource和@ConfigurationProperties从文件中读取属性。以下是示例属性: patterns[0]=\b(test1)\b patterns[1]=\b(test2)\b @Configuration @PropertySource("classpath:patterns.properties") @ConfigurationProperties public class PatternConfig { private Li

我使用Spring的
@PropertySource
@ConfigurationProperties
从文件中读取属性。以下是示例属性:

patterns[0]=\b(test1)\b
patterns[1]=\b(test2)\b
@Configuration
@PropertySource("classpath:patterns.properties")
@ConfigurationProperties
public class PatternConfig {

    private List<String> patterns;
    //Getters and Setters
}
下面是读取这些属性的类:

patterns[0]=\b(test1)\b
patterns[1]=\b(test2)\b
@Configuration
@PropertySource("classpath:patterns.properties")
@ConfigurationProperties
public class PatternConfig {

    private List<String> patterns;
    //Getters and Setters
}

因此,我需要重写调用字符串属性的
Pattern.compile
,并返回
Pattern
对象,然后将其添加到列表中。有可能吗?

在此配置中创建一个方法,返回模式列表,用@Bean注释它,并在该方法中编译模式

@SpringBootApplication
@EnableConfigurationProperties
@Import(PatternConfig.class)
public class DemoApplication {

  public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
  }
}


@Configuration
@PropertySource("classpath:patterns.properties")
@ConfigurationProperties
class PatternConfig {


  public void setPatterns(List<String> patterns) {
      this.patterns = patterns;
  }

  private List<String> patterns;

  public List<String> getPatterns() {
      return patterns;
  }

  @Bean
  public List<Pattern> compiledPatterns() {

      List<Pattern> compiledPatterns = new ArrayList<>();
      for (String pattern : patterns) {
        compiledPatterns.add(
                Pattern.compile(pattern));
      }
      return compiledPatterns;
  }

}
@springboot应用程序
@EnableConfigurationProperties
@导入(PatternConfig.class)
公共类演示应用程序{
公共静态void main(字符串[]args){
run(DemoApplication.class,args);
}
}
@配置
@PropertySource(“类路径:patterns.properties”)
@配置属性
类PatternConfig{
公共模式(列表模式){
这个模式=模式;
}
私有列表模式;
公共列表getPatterns(){
返回模式;
}
@豆子
公共列表compiledPatterns(){
List compiledPatterns=new ArrayList();
for(字符串模式:模式){
compiledPatterns.add(
编译(Pattern));
}
返回编译模式;
}
}

这意味着我需要以字符串形式读取整个列表,然后通过再次迭代(至少一次)来转换它。当属性被添加到列表中时,我们是否可以以某种方式执行此转换?这不是会实现完全相同的结果吗?您可以为答案添加一个示例吗?代码示例addedIMHO您不需要覆盖它(也许也不应该),您可以将其定义为字符串,并在getter中计算它。您尝试过吗。。。