멀티티어 아키텍처
- 프레젠테이션 층 : UI와 관련됨
- logic 층 : 사용자의 입력을 확인하고 액션
- 데이터 층 : 데이터를 저장하고 불러옴
- 데이터의 표현을 주고받음
- 실제 데이터를 다루지는 않음
spring boot 구조
- dispatcher servlet : 요청을 받아줌
- controller : 디스패처에서 요청을 받아서 클래스로 저장
- service: controller가 검증한 요청을 받아서 사용자의 입력에 따른 데이터 조작
- repository : service가 데이터를 요청하면 요청에 따라 데이터를 처리 혹은 조회함.
의존성 주입 (DI)
- 코드 상 객체를 직접적으로 만드는 것이 아니라 객체 밖에서 객체를 넣어주는 방식이다.
- Car 내부의 wheels와 같이 Car과 의존관계에 있는 객체에 사용한다.
//의존성 주입을 사용하지 않는 케이스
class Car{
private Wheels wheels;
public Car(){
wheels = new Wheels();
}
}
- 의존성 주입을 사용하지 않으면, Car의 생성자 코드를 수정하지 않는 한 wheels는 Wheels 객체를 가리키게 된다.
//의존성 주입을 사용한 케이스
class Car{
private Wheels wheels;
public Car(Wheels wheels){
this.wheels = wheels;
}
}
- 의존성 주입을 사용하게 되면, Car 객체 생성 시 넘겨주는 객체에 따라서 wheels 가 가리키는 객체가 바뀐다.
Autowired 어노테이션
- 스프링 컨테이너에 beans 객체 모두 등록한 후, DI가 시작된다.