정글에서 온 개발자
dev-diver
정글에서 온 개발자
Spring 큰 그림 그려보기 본문
정리
Spring 큰 그림 그려보기
dev-diver
2024. 1. 5. 11:23
서블릿 엔진 → @RestController
- 개발자는 Javax.servlet.http.HttpServlet을 상속받는 서브 클래스를 작성해야 한다.
- 서블릿 컨테이너는 서블릿 서브 클래스를 실행시킨다.
- @RestController 에는 이 서블릿 서브 클래스가 이미 구현되어있다.
MVC
흐름
- contoller → model (service → repository) 데이터처리
- 데이터 → service → controller → view
M(odel)
- @Service - Model에서 비즈니스 로직을 담당함
- @Repository - 서비스에서 호출되어 실제 데이터베이스와 연결, 데이터 조회, 저장 작업을 수행함
- .findbyId 등 이용 가능extends JpaRepository<Entity, Id> 로 JPA 이용
- @Query 로 쿼리도 이용 가능
V(iew)
C(ontroller)
- @Controller - 클라이언트 요청 처리, 사용자 입력 받아 모델 업데이트, 특정 뷰 선택,
- 어떤 로직을 수행할지 결정하고 결과를 뷰에 전달함
- 위 어노테이션 모두 @Component가 달려있다.
레이어드 아키텍쳐, 클래스의 두 종류
- 일을 하는 클래스
- 데이터를 담는 클래스
- DTO(Data transfer Object) - client와 최종적으로 주고받는 데이터 형태
- 모델 - 비즈니스 데이터를 담음
- 엔티티 - 데이터베이스의 테이블, 스키마를 표현
구현을 위한 Annotation
의존성 주입 Annotation
- main
- @SpringBootApplication
- @ComponentScan 이 있다. 컴포넌트 스캔을 한다.
- @Component가 달린 클래스를 스캔한다.
- @Autowired 로 의존성을 연결해준다.
- configClass
REST Annotation
- @RestController
- @RequestMapping(””)
- @GetMapping - method
- @PathVariable
- @RequestParam - 파라미터
- @RequestBody
DTO Annotation
- @Builder
- @NoArgsConstructor
- @AllArgsConstructor
- @Data
Entity Annotation
- @Builder - Builder 디자인 패턴 구현
- @NoArgsConstructor - 필요. 매개변수가 없는 생성자 구현
- @AllArgsConstructor -모든 매개변수로 받는 생성자 구현.
- @Data - Getter/Setter 메서드를 구현
- @Entity
- @ Table(name=”이름”)
- @Id
- @GeneratedValue(generator)
- @GenericGenerator(name, strategy) - 나만의 전략으로 생성하고 싶을 때
템플릿
패키지 구성
- controller
- Controller - @Controller, Service 주입
- DTO (ex. MemberForm)
- service
- ServiceClass - Repository 주입
- domain
- Model 비즈니스 객체 (ex. Member)
- repository
- RepositoryInterface - JpaRepository를 extends 하면 자동구현도 된다.
- Entity
호출 흐름 예시
- controller : service.join() → service : repository.save() → repository : JPA