의존성 자동 주입 방법
@Autowired
@Autowired는 필드와 메서드에 붙일 수 있다. 스프링이 해당 메서드를 호출하여 파라미터 타입에 해당하는 빈 객체를 인자로 주입한다.
필수가 아닌 주입대상에는 @Autowired(required = false)로 지정해주면 된다.
스프링 5부터는 Optional을 사용해도 된다.
@Autowired
pulblic void setSomething(Optional<Something> some) {
...
}
또한 @Nullable 애노테이션으로 필수 여부를 지정할 수 있다.
셋의 차이점은 다음과 같다.
// 차이점
@Autowired(required = false) -> 매칭되는 빈이 없으면 메서드 호출되지 않는다. 미리 할당된 값이 있으면 값을 바꾸지 않는다.
@Nullable -> 매칭되는 빈이 없어도 메서드 호출한다. 미리 할당된 값이 있어도 null로 바꾼다.
Optional -> 매칭되는 빈이 없으면 값이 없는 Optional 할당한다.