티스토리 뷰

 일반적으로 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을 보지 않으셔도 됩니다.


댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday