Wpis z mikrobloga

Hej
Chodzi o dodanie tablicy Stringów jako atrybutów z app.properties.
W app.properties mam:
some.values=one,two,three,four
W kodzie mogę to dodać tak i działa:
@Value("${some.values}")
private String[] values;

Na Stacku znalazłem jescze taki niby lepszy sposób Spring 4.0+
@Autowired
private Environment env;
...
String[] values = env.getProperty("some.values", String[].class);

Niestety ten sposób mi nie działa (null pointer ex przy inicjalizacji kontenera). Nie zrozumiałem jeszcze klasy Environment. Jakieś podpowiedzi? W xml'u app.props mam podpiete tak:

#spring #naukaprogramowania #java
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Ewentualnie: Lubie wiedzieć dlaczego mi nie działa. Konfiguracja za pomocą Javy a nie xml'a niestety nie rozwiązuje sprawy. Ide dalej (tymbardziej że działa poprzez value), może zajrzy tu ktoś dla kogo ta odpowiedź będzie oczywista.
  • Odpowiedz
@Equalizer: Nie możesz odwoływać się do metod wstrzyknietych beanow w konstruktorze/definicji pola, bo sa one wstrzykiwane dopiero po stworzeniu instancji obiektu (stąd null pointer, bo pod env jeszcze nic nie ma). Możesz to natomiast zrobić w metodzie annotowanej @PostConstruct, która jest wywoływania po wstrzyknieciu wszystkich zależności.
  • Odpowiedz