IT/Framework
Spring - Static field에 Autowired 적용하기
Normal_One
2018. 12. 8. 15:43
일반적으로 Spring은 Spring 영역을 벗어나면 Component scan 범위를 벗어나므로 의존 주입을 할 수 없습니다. 본 바탕이 Spring인데 외부 API에 DB를 이용해서 데이터를 적재해야 하는데 dao(data access object)를 Autowired 할 수 없으니 따로 Util을 생성하여 거기에 DB를 적재하고자 생각했습니다. 다만, 이렇게 적용해보니 문제가 Util로 가게 되면 생성되는 Method들이 모두 static으로 선언되어 생성되는데 static 영역에는 Autowired를 사용할 수 없었습니다. 그래도 꼼수로 static 필드에 넣을 수 있는 방법이 있지 않을까 싶어서 검색해보니 역시 위대한 구글신께서 방법을 알려주셨습니다. 방법은 아래와 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @Component public class component { private static Dao staticDao; @Autowired private Dao dao; @PostConstruct private void initStaticDao () { staticDao = this.dao; } } | cs |
위와 같이 해주면 아무 문제없이 dao를 사용할 수 있습니다. dao가 Autowired 되지 않아 뜨는 지겨운 Nullpointerexception을 보지 않으셔도 됩니다.