autowired 가 없이 자동으로 / argument 에 parameter 에 autowired 가 없는 경우
spring boot 에서 Constructor Dependency Injection(CDI)
대체로 ref. 3 에서 잘 정리된 듯 하다. 여기서는 constructor 에
@Autowired
가 없는 경우, 그리고 argument 가 어디에서도
명시적으로(explicitly) instantiated 가 안되는 경우에 대해 어떻게
동작하는지를 이야기하려 한다.
constructor 에
@Autowired
가 없는 경우
CDI(Constructor Dependency Injection) 을 사용하는 것은 특별한 것이 아니다. 이것을 사용하면, 일반적으로 우리가 java 를 사용하듯이 constructor 의 argument 들은 instantiated 되고나서 넘어오게 된다.
여기서 constructor argument들 에 대한 intantiation 을
@Configuration
에서 해놓으면 된다.[ref. 1], ref.1 에서
code를 확인할 수 있다.
argument 에 대한 instantiate 은 어디서 하는가?
그러나 java - How do constructor calls with @Autowired work? - Stack Overflow 를 보면, 만약 argument 에 대해서 어디선가 instantiate 를 해놓지 않았다고 하더라도, 자동으로 해주게 된다.
참고로, spring 4.3.x 부터는 constructor 가 1개라면,
@Autowired
를 생략해도 된다.[ref. 2]
그래서 다음과 같은 class 에서 MyTestService 는 자동으로 instantiate 가 된다고 보면 될 듯 하다.
public class MyTestClass {
private MyTestService service;
public MyTestClass(MyTestService service) {
this.service = service;
}
}
댓글 없음:
댓글 쓰기