Весна: как ввести значение в статическое поле?
С этим классом
@Component
public class Sample {
@Value("${my.name}")
public static String name;
}
если я попробую Sample.name
, это всегда 'null'. Так что я попробовал это.
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;
}
}
этот код работает. Sample.name
установлен правильно. Это хороший способ или нет? Если нет, то есть ли что-то более хорошее? И как это сделать?
1 ответ:
в первую очередь
public static
неfinal
поля зло. Весна не позволяет закачивать в такие поля по какой-то причине.код решение действительно, вам даже не нужен геттер / сеттер,
private
поле достаточно. С другой стороны попробуйте это:@Value("${my.name}") public void setPrivateName(String privateName) { Sample.name = privateName; }
(работает с
@Autowired
/@Resource
). Но чтобы дать вам несколько конструктивных советов: создайте второй класс сprivate
поле и геттер вместо