정글에서 온 개발자
Spring 큰 그림 그려보기 본문
서블릿 엔진 → @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)
- Thymeleaf
- React
C(ontroller)
- @Controller - 클라이언트 요청 처리, 사용자 입력 받아 모델 업데이트, 특정 뷰 선택,
- 어떤 로직을 수행할지 결정하고 결과를 뷰에 전달함
- 위 어노테이션 모두 @Component가 달려있다.
레이어드 아키텍쳐, 클래스의 두 종류
- 일을 하는 클래스
- 컨트롤러
- 서비스
- 퍼시스턴스
- 데이터를 담는 클래스
- DTO(Data transfer Object) - client와 최종적으로 주고받는 데이터 형태
- 모델 - 비즈니스 데이터를 담음
- 엔티티 - 데이터베이스의 테이블, 스키마를 표현
구현을 위한 Annotation
의존성 주입 Annotation
- main
- @SpringBootApplication
- @ComponentScan 이 있다. 컴포넌트 스캔을 한다.
- @Component가 달린 클래스를 스캔한다.
- @Autowired 로 의존성을 연결해준다.
- configClass
- @Configuration
- @Bean으로 빈을 수동 등록한다.
- @Configuration
REST Annotation
- @RestController
- @RequestMapping(””)
- @GetMapping - method
- @PathVariable
- @RequestParam - 파라미터
- @RequestBody
- RequestBodyDTO 필요
- @GetMapping - method
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
'정리' 카테고리의 다른 글
Spring 데이터 관리 라이브러리 변화와 비교 (1) | 2024.01.05 |
---|---|
Spring 게시판 Skeleton 코드 (1) | 2024.01.05 |
[pintOS]-Priority Inversion, Multiple, Nested 정리 (1) | 2023.12.05 |
이거 혹시 DP로 풀 수 있는 문제인가? (0) | 2023.11.01 |
P,NP,NPC 문제 (2) | 2023.11.01 |