为什么我不能在Spring WebConfig中使用@ConfigurationProperties而不是@Value

时间:2018-02-13 21:38:28

标签: java spring spring-config

我想根据配置文件application.properties将我的WebConfig bean配置为具有不同的CORS来源。

由于某种原因,application-local.properties中的值未注入我的WebConfig bean的字段中。

当我在这里使用@Value时,它会起作用(请查看工作示例的最后标题)

入门级

@SpringBootApplication
@EnableEurekaClient
@ComponentScan("com.company.coma")
public class EventWebApplication {
  public static void main(String[] args) {
    SpringApplication.run(EventWebApplication.class, args);
  }
}

WebConfig.java

@Configuration
@ConfigurationProperties("coma.cors")
public class WebConfig extends WebMvcConfigurerAdapter {
  private String origin;

  @Override
  public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping(Resources.Services.APIs.Event.GET_STATUS + "/**")
            .allowedOrigins(origin);
  }
}

application-local.properties

coma.cors.origin=http://localhost:8080

执行

使用-Dspring.profiles.active=local

启动应用程序

结果

enter image description here

工作示例

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
  @Value("${coma.cors.origin}") // this works
  private String origin;

  @Override
  public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping(Resources.Services.APIs.Event.GET_STATUS + "/**")
            .allowedOrigins(origin);
  }
}

0 个答案:

没有答案