보통 @Autowired, @Injection을 이용하여 주입한다.

그런데 지금 예제에서는 어떠한 빈에 생성자가 1개만 있고 파라미터로 받는 빈이 있다면 @Autowired가 없더라도 의존성을 주입 해준다.

// @Autowired 생략
public OwnerController(OwnerRepository clinicService) {
    this.owners = clinicService;
}

의존성 주입 어디에 붙일까?

반드시 필요한 객체 일 경우 생성자에서 처리하고 필드와 setter사이에선 이미 setter가 있는 경우에 setter를 쓰고 억지로 만들지는 말자. setter가 없으면 필드에 추가하자.

토막 지식

@Autowired, @Inject 차이

public class Bird{}
@Component
public class Chicken implements Bird{}
@Component
public class Penguin implements Bird{}
@Autowired
private Chicken penguin;  
//Chicken 타입으로 연결됩니다.

@Inject
private Penguin chicken; 
//Penguin 타입으로 연결됩니다.

@Resource
private Chicken penguin;  
//penguin 타입으로 연결됩니다만, Chicken 클래스를 자료형으로 두었기에 캐스팅이 되지 않아 에러가 납니다

@Resource
private Bird penguin;   
//penguin 타입으로 연결되어 호출해보면 penguin 클래스의 값을 호출하는 것을 볼 수 있습니다.