자동 객체 연결
[다형성 미적용]
변경 포인트 2개
SportCar car -> Truck carSportsCar(); -> new Truck();// 변경 전
SportCar car = new SportsCar();
// 변경 후(변경 포인트가 2개)
Truck car = new Truck();
[다형성 적용]
변경 포인트 1개
Class car {}
Class SportsCar extends Car {}
Class Truck extends Car {}
// 변경 전
Car car = new SportsCar();
// 변경 후(변경 포인트가 1개)
Car car = new Truck();
Component Scanning 에 대해서 세부적으로 알고 싶다면 아래 링크 참고
링크
클래스의
상속관계에 대한 자동 객체 등록클래스의 객체는 조상 객체거나
자손 객체모두 적용가능하다.
<component-scan> Bean 추가서브패키지까지 검색 가능guava 라이브러리 적용해야 component-scan 사용 가능 <context:component-scan base-package="com.devcamp.eztour"/>
메타 애너테이션) 애너테이션 적용된 모든 클래스를 찾은 후 Map 저장 
[위 표는 여행사 프로젝트의 후기 게시판 component bean 등록된 Map 테이블]
@Component("superEngine") // 이름 설정
// 위, 아래 결과 똑같음
@Component // 이름 생략
class SurperEngine extends Engine {}
<component-scan>로 @Component가 클래스를 자동 검색해서 빈으로 등록!메타 애너테이션
애너테이션을 위한 애너테이션
@Controller, @Service, @Repository, @ControllerAdvice 애너테이션들은 메타 애너테이션인 @Component 적용되어 있음
byTpye 으로 타입 먼저 검색 후 자동 객체 연결동일한 타입이라면 이름 검색 후 자동 객체 연결RvwController(후기 게시판 Controller)
@Controller
public class RvwController {
@Autowired RvwService rvwService;
@Autowired RvwLkAdmService rvwLkAdmService;
}

이름으로 빈을 검색 아래 그림과 같이 동일한 결과를 보여주지만, Spring 방식은 @Autowired 이다.

그림에서 보는 거와 같이 0x200(Engine), Ox400(Engine) 타입이 동일하지만 map에서의 key(Bean) 이름이 달라 @Resource 를 사용하여 자동 연결할 수 있다.
Class Car {
@Resource(name="engine2") Engine engine;
@Resource Door door;
}

Spring Contanier가 관리하는 자바 객체