속성 파일에서 값을 가진 bean을 만들고 싶습니다. 나는 이런 식으로 뭔가 만들어 :Constructor에서 @Value 주석 변수에 어떻게 액세스합니까?
@Component
public class MainNavs implements Iterable<Nav>{
@Value("${newshome.navs.names}")
String[] names;
@Value("${newshome.navs.ids}")
String[] ids;
final private List<Nav> navs = new ArrayList<Nav>();
public MainNavs() throws Exception {
for (int i = 0; i < names.length; i++) {
navs.add(new Nav(names[i], ids[i]));
}
}
public Iterator<Nav> iterator() {
Iterator<Nav> n = navs.iterator();
return n;
}
public class Nav {
private String name;
private String id;
private String imageNumber;
public Nav(String name, String id, String imageNumber) {
this.name = name;
this.id = id;
}
//....
}
}
을하지만이 @Autowired MainNavs navs;
같은 autowire하기 때, 그것은 생성자들에 액세스하려고 할 때 names
및 ids
때문에 시작되지 않은 NullPointerException
한다.
init()
과 같은 방법을 사용하여 시작하려고하면 아무런 문제가 없습니다.
public init() throws Exception {
for (int i = 0; i < names.length; i++) {
navs.add(new Nav(names[i], ids[i]));
}
}
그러나 수동으로 시작하고 싶지는 않습니다. 생성자에서 초기화 할 수 있습니까? 또는 다른 대안?
귀하는 사용하는 스프링의 버전을 지정하고 귀하의 질문에 컨텍스트 xml (계시 분)을 추가해야합니다. 이 http://forum.springsource.org/showthread.php?69602-Value-and-PropertyPlaceholderConfigurer도 도움이 될 수 있습니다 (차이점 btw'# {...}'및'$ {...}') –