Primavera: ¿cómo inyectar un valor al campo estático?

Con esta clase

@Component public class Sample { @Value("${my.name}") public static String name; } 

Si bash Sample.name , siempre es ‘nulo’. Así que probé esto.

 public class Sample { public static String name; @PostConstruct public void init(){ name = privateName; } @Value("${my.name}") private String privateName; public String getPrivateName() { return privateName; } public void setPrivateName(String privateName) { this.privateName = privateName; } } 

Este código funciona Sample.name está configurado correctamente. ¿Es esta la buena manera o no? Si no, ¿hay algo más que bueno? ¿Y, cómo hacerlo?

Primeros de todos, public static campos no final public static son malvados . Spring no permite la inyección en tales campos por una razón.

Su solución alternativa es válida, ni siquiera necesita getter / setter, private campo private es suficiente. Por otro lado intente esto:

 @Value("${my.name}") public void setPrivateName(String privateName) { Sample.name = privateName; } 

(funciona con @Autowired / @Resource ). Pero para darle algunos consejos constructivos: Cree una segunda clase con campo private y captador en lugar de campo public static .