Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- IPC
- 스프링부트
- spring
- 프레젠테이션 계층
- 스프링부트 계층구조
- 작업명중복
- http
- ./gradlew docker
- java I/O
- 퍼시스턴스 계층
- MSA
- @temproal
- 세션기반 인증
- 스프링 부트 테스트
- 어노테이션
- ./gr
- 로그인/로그아웃
- 스프링
- ORM
- JWT
- RESTfull API
- 스프링부트 구조
- formmatted
- 토큰기반 인증
- Java
- 동기
- 비동기
- 로그인 인증 흐름
- 비즈니스 계층
- JPA
Archives
- Today
- Total
[DEV] J-Jay
스프링 부트 계층 파악하기 본문
728x90
스프링 부트 계층 파악하기
코드를 이용해서 스프링 부트에서는 계층을 어떻게 나누는지 확인해 보자.
build.gradle 의존성 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' //JPA
runtimeOnly 'com.h2database:h2' //In Memory Database
compileOnly 'org.projectlombok:lombok' //Lombok
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
프레젠테이션, 비즈니스, 퍼시스턴스 계층 생성
TestController.java - 프레젠테이션(Controller)
@RestController
public class TestController {
@Autowired
TestService testService;
@GetMapping("/test")
public List<Member> getAllMembers() {
List<Member> members = testService.getAllMembers();
return members;
}
}
TestService.java - 비즈니스(Service)
@Service
public class TestService {
@Autowired
MemberRepository memberRepository; // 빈 주입
public List<Member> getAllMembers() {
return memberRepository.findAll(); //멤버 목록 얻기
}
}
MemeberRepository라는 빈을 주입받은 후 findAll() 메서드를 호출해 멤버 테이블에 저장된 멤버 목록을 모두 가져온다.
Member.java - 퍼시스턴스(DAO)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Getter
@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false)
private Long id;
@Column(name = "name", nullable = false)
private String name;
}
DB에 접근할 때 사용할 객체인 Member DAO 생성
MemberRepository.java - 퍼시스턴스(Repository 매핑)
@Repository
public interface MemberRepository extends JpaRepository<Member, Long> {
}
member 테이블과 Member 클래스를 매핑하는 코드
매핑 작업에는 인터페이스 파일이 필요하다. 이 인터페이스는 DB에서 데이터를 가져오는 퍼시스턴트 계층 역할을 한다.
PostMan
스프링 부트 요청(Request) - 응답(Response) 과정 정리
- PostMan에서 /test GET 요청을 한다.
- 스프링 부트의 디스패처 서블릿이 URL 분석, 요청을 처리할 컨트롤러 확인
TestController가 /test라는 GET요청을 처리할 수 있는 getAllMembers() 메서드를 가지고 있으므로 전달 받음 - getAllMembers() 메서드와 /test GET 요청 매치, 비즈니스 계층과 퍼시스턴스 계층을 통해 필요한 데이터 수집
- View Resolver는 템플릿 엔진을 사용해 HTML 문서 또는 JSON, XML 등의 데이터 생성
- 결과 members를 return 하고 그 데이터를 PostMan에서 확인 가능
'Back-end > Spring' 카테고리의 다른 글
스프링 부트 테스트 코드 (2) - AssertJ (0) | 2023.09.02 |
---|---|
스프링 부트 테스트 코드 (1) - JUnit (0) | 2023.09.02 |
스프링 부트 구조 (1) | 2023.09.02 |
스프링 부트 코드 이해 (2) (0) | 2023.08.31 |
스프링 부트 코드 이해 (1) (0) | 2023.08.31 |