BacGyber's Tricks

[Spring] @Autowired 참조 대상이 null 인 경우 & depends-on Multiple 설정방법

□ Tech (Software)

@Autowired 를 이용해 참조하는 대상이 null 인 경우


class A와 B가 

Spring Context Xml 상에서 

Scan 대상으로 되어 있거나

bean 선언이 되어 있는 상황에서도


A에서 

@Autowired B b; 와 같이 사용할때

b가 null 이어서 참조할수 없는 trouble 상황을 만나기도 한다.


이럴때는 체크하는 방법이 좀 있겠으나

빨리 해결하는 방법은

Spring Context Xml 상에서

1) bean 선언 순서를... A 먼저 하고 B 를 하도록 하던가

2) 아님 아예 깔끔하게 depends-on 을 사용해서 하도록 한다.


* 순서만 잡아놓아도 보통은 잘되지만 그렇지 않은 경우도 있다


그런데... 이러한 상황은 하나의 Class에서 여러개의 bean 을 참조하는 나름 좀 복잡한 상황일 수 있으므로


여러개의 bean 을 @Autowired 를 통해 참조해야 하는 개연성이 좀 있다.


즉.. 예를 들어 A에서 B뿐만 아니라 C도 @Autowired로 사용해야 할때는

B와 C를 depends-on 으로 잡아야 할 것이다.


그렇다면?

bean 선언시 depends-on 에 여러개 bean 설정 방법

<bean id="sexyRestClient" 

class="com.sexy.framework.rest.client.SexyRestClient" 

depends-on="restTemplate,sexyLogToDBServiceImpl" />


멀티 구분자는 위와 같이 comma 또는 whitespace (공백), semi-colon 등으로 하면 된다.  depends-on 에 하나씩만 걸어 써봤는데 여러개 걸어보는건 이번에 첨 해봄.


  시원하게 공감버튼 빡!! ( 0.5초 걸려요 ) ^>^