Spring - 4일차 (MVC2 모델 이론)
■ 간단한 이론 정리
프레임워크 : 소프트웨어 개발에 있어 하나의 뼈대 역할을 한다.
@Controller / XML<Bean>
new의 의미 : 새로운 공간의 할당
프레임워크를 통해 객체 관리가 수월해진다.
POJO : 객체지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용 될 수 있는 방식으로 설계된 오브젝트를 말한다.
□ DI & IOC
1. 의존성 주입 : Spring DI (Dependency Injection)
- 프로그램에 필요한 각종 클래스들을 Bean Container에 두고 필요할 때마다 불러와서 사용함.
- 객제가 의존성이 존재한다는 것을 뜻한다.
- Service 클래스는 DAO 클래스에 의존성이 있다.
- 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입을 시켜주는 방식
- 객체의 의존성을 직접(new) 연결하는 게 아니라 spinrg(xml)이 연결해주는 방식
- Spring Container에 bean을 생성해 놓고 필요할 때 꺼내 사용하는 방식
- xml이나 annotation을 이용
2. 제어 역전 : Spinrg IoC (Inversion of Control)
- 프로그램을 제어하는 패턴 중 하나
- DI는 IoC패턴의 구현체 중 하나
- 제어를 개발자가 아니라 스프링이 한다. 그 의미 자체가 IoC.
- 내가 new를 통해 생성하면 내가 관리하고 그렇지 않으면 스프링이 관리한다.
- 약한 결합을 이용하여 객체 간 의존 관계를 쉽게 변경할 수 있음.
- 스프링 컨테이너가 필요에 따라 개발자 대신 Bean들을 관리(제어)해주는 행위
- interface를 만들어두고, class만 바꿔 끼면 교체가 쉬워진다.
■ MVC2 모델
Model : 데이터 처리하는 영역
View : 화면을 구현하는 영역
Controller : 요청 경로를 처리하는 영역
□ Spring 동작구조
□ Context : component-scan 적용 어노테이션
@Component : 스프링 빈 임을 의미한다.
@Service : 서비스를 의미한다.
@Repository : 보통 dao에 적용하여 사용한다.
@Controller : 컨트롤러를 의미한다.
□ 자동 주입 어노테이션
@Autowired
- 타입을 기준으로 bean 주입
- 같은 타입 beab 2개 이상일 경우 이름으로 주입
@Qualifier
- Autowired와 같이 사용
- Bean의 이름을 지정하여 주입
@Resource
- 주입하려고 하는 bean의 name(id)이 일치하는 객체를 자동으로 주입한다.
- Jdk9에는 포함되어 있지 않다.
@Inject
- @Autowired와 동일하다.