java—spring中注解的执行顺序

mitkmikd  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(556)

这个问题在这里已经有答案了

如何在类级变量中使用spring@value注解(3个答案)
spring@value(“${}”)通常为空(4个答案)
我的注解@value返回null,即使它被使用并调用到组件注解类中(2个答案)
spring boot- @Values 返回null(6个答案)
上个月关门了。
我试图从springboot中的属性文件加载一些属性,但也希望使用列表访问它们。我不确定班级成员的姓名缩写顺序。

@Getter
@Setter
@ConfigurationProperties
public class ConfigurationM{

   @Value("${propA}")
   private String propA;

   @Value("${propB}")
   private String propB;

   private List<String> list = Collections.unmodifiableList(propA, propB);

}

@value annotation是否在初始化列表之前注入值?在使用注解时加载类时,如何确定求值顺序?

svgewumm

svgewumm1#

@value annotation是否在初始化列表之前注入值?
不幸的是,没有!“instance initializer”(类/对象体)在“constructor”之前执行,spring没有机会在那里注入任何东西。
在使用注解时加载类时,如何确定求值顺序?
-> https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans
你也可以驱逐 @PostConstruct 纯spel:

// pure (built-in) SpEL:
@Value("#{{'${propA}', '${propB}'}}")
private List<String> list;

// Java < 9
@Value("#{ T(java.util.Arrays).asList('${propA}', '${propB}')}")
private List<String> listJ8;

// Java > 8
@Value("#{ T(java.util.List).of('${propA}', '${propB}')}")
private List<String> listJ9;

相关问题