1. MVC 패턴
MVC는 Model, View, Controller의 약자로 개발을 할 때, 이 3가지 형태로 나누어 개발하는 방법론이다. 쉽게 이해하면 모든 기능이 몇천줄의 코드를 가진 하나의 파일로 모여있으면 유지보수를 할 때 힘드니 이를 나누어서 나중에 무언가를 변경하거나 유지보수하기 편하게 할 수 있다.
Model, View, Controller는 각각 아래와 같다.
Model: 어플리케이션이 무엇을 할 것인지 정의하는 부분. DB와 연동하여 데이터를 다루는 역할을 함.
View: 사용자에게 시각적으로 보여지는 부분 (UI)
Controller: Model이 데이터를 어떻게 처리할지 알려주는 역할을 한다. 즉 요청을 처리한 후 지정된 뷰에 모델 객체를 넘겨주는 역할을 한다.
결국 controller를 이용하여 아래와 같은 순서로 사용자 요청이 처리된다.
(사용자 요청) --> (Controller) --(처리할 사항)--> (Service)
(Service) --(처리된 내용)--> (Controller) --> (사용자)
2. DI (Dependency Injection, 의존성 주입)
참고자료: https://velog.io/@jeong-god/DI%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
의존성을 주입한다는 것은 쉽게 말하면, 서로 연관이 있는 두 가지를 스프링이 연결해주는 것을 의미한다. 예를 들어 MemberController와 MemberService가 있다고 해보자. 여기서 MemberService는 MemberController 내에서 이용되어야 한다. 이 둘은 서로 연관이 있으며, MemberController만이 MemberService를 이용할 수 있다고 해보자. 이 둘을 연결시켜주는 것을 연관성 주입이라고 할 수 있고, 이를 @Autowired 어노테이션 등을 이용하여 할 수 있다는 것이 간단한 설명이다.
의존성 주입을 하지 않으면 코드의 재활용성 등의 문제가 발생할 수 있기 때문에 DI를 사용하여 이런 문제들을 방지하는 것이다.
스프링에서 DI를 사용하는 데에는 세 가지 방법이 있다. 자세한 구현 방식은 위 참고자료 링크에서 확인이 가능하다. 이 중 생성자 주입이 권장된다. (의존 관계가 실행 중 동적으로 변하는 경우가 거의 없기 때문)
(1) 생성자 주입 (Constructor Injection)
@Controller
public class MemberController {
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
(2) 필드 주입 (Field Injection)
@Controller
public class MemberController {
@Autowired private MemberService memberService;
}
(3) 수정자 주입 (Setter Injection)
@Controller
public class MemberController {
private MemberService memberService;
@Autowired
public void setMemberService(MemberService memberService) {
this.memberService = memberService;
}
}
'2024-겨울 프로젝트 관련 공부' 카테고리의 다른 글
[Spring Booot][기본 개념] DTO, Entity, DAO 개념 익히기 (0) | 2025.01.11 |
---|---|
[Spring Boot / Kotlin] 튜토리얼4, Spring Data CrudRepository 활용하기 (0) | 2025.01.07 |
[Spring Boot / Kotlin] 튜토리얼3, data base 추가하기 (0) | 2025.01.06 |
[Spring Boot / Kotlin] 튜토리얼2, data class 추가하기 (0) | 2025.01.04 |
[Spring Boot / Kotlin] 튜토리얼1, Spring Boot 시작하기 (0) | 2025.01.04 |