실행된 결과에서 주목해야 하는 부분은 다음과 같다.
new Restaurant()과 같이 객체를 생성한 적이 없는데도 객체가 만들어졌다는 점.
스프링은 관리가 필요한 객체(Bean)을 어노테이션 등을 이용해서 객체를 생성하고 관리하는 일종의 '컨테이너'나 '팩토리'의 기능을 가지고 있다.
Restaurant 클래스의 @Data 어노테이션으로 Lombok을 이용해서 여러 메서드가 만들어진 점 - Lombok은 자동으로 getter/setter등을 만들어 주는데 스프링은 생성자 주입 혹은 setter 주입을 이용해서 동작한다. Lombok을 통해서 getter/setter 등을 자동으로 생성하고 'onMethod' 속성을 이용해서 작성된 setter에 @Autowired 어노테이션을 추가한다.
Restaurant 객체의 Chef 인스턴스 변수(멤버 변수)에 Chef 타입의 객체가 주입되어 있다는 점 - 스프링은 @Autowired와 같은 어노테이션을 이용해서 개발자가 직접 객체들과의 관계를 관리하지 않고, 자동으로 관리되도록 한다.