일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- dbeaver
- 클라우드 서비스 개발 #
- AWS
- 우리FIS아카데미 #
- 맥
- route 53
- M2
- https
- jdk
- springboot
- 맥OS
- 우리에프아이에스 #
- 우리에프아이에스
- spring
- 우리FISA
- 리눅스
- Java
- 우리FISA #
- 클라우드 서비스 개발
- Gradle
- 로드밸런스
- 글로벌소프트웨어캠퍼스
- 맥북
- mysql
- HTTP
- 우리FIS아카데미
- sts
- 도메인
- K-디지털트레이닝
- Today
- Total
<<개발일지>>
쿼리 스트링이 스프링 자바에서의 동작하는 흐름 본문
과거에 한 번 만들어 봤지만,
한 번 더 개념을 정리하고 머릿속에 장기 기억 시키기 위해 추가 복습을 진행 했다.
URL에 앤드포인트 다음 쿼리 스트링이 자바(스프링)에서 구체적으로 어떻게 돌아가는 것인가??
간단하게 요약을 한다면,
Spring MVC 구조로 작동하게 된다.
1. Controller (컨트롤러) : 클라이언트 요청을 받아 서비스 레이어에 전달하고, 처리된 결과를 반환한다.
2. Service (서비스) : 비즈니스 로직을 처리하며, 필요한 경우 데이터베이스와 상호작용한다.
3. Repository (리포지토리) : 데이터베이스와 직접 상호작용하며, 데이터 조회, 저장, 삭제 등의 작업을 수행한다.
예시
1. Entity 클래스 (책정보)
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Book {
@Id
private String isbn;
private String title;
private String author;
private String publisher;
// Getters and Setters
}
2. Repository 인터페이스
Spring Data JPA를 사용하면 Repository 인터페이스를 통해 데이터베이스 작업을 쉽게 처리할 수 있다.
import org.springframework.data.jpa.repository.JpaRepository;
public interface BookRepository extends JpaRepository<Book, String> {
// ISBN으로 책 정보를 조회하는 메서드
Book findByIsbn(String isbn);
}
3. Service 클래스
서비스 레이어는 비즈니스 로직을 처리하고, 리포지토리와 상호작용하여 데이터베이스 작업을 수행한다.
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
@Service
public class BookService {
private final BookRepository bookRepository;
@Autowired
public BookService(BookRepository bookRepository) {
this.bookRepository = bookRepository;
}
// ISBN으로 책 정보 조회
public Book findBookByIsbn(String isbn) {
return bookRepository.findByIsbn(isbn);
}
}
*@Autowired란
Spring Framework에서 "의존성 주입(Dependency Injection)" 을 수행하기 위한 애노테이션이다. 이 애노테이션을 사용하면 Spring이 자동으로 해당 클래스의 인스턴스를 생성하여 주입한다.
의존성 주입(Dependency Injection)?
의존성 주입은 객체 간의 의존 관계를 Spring 프레임워크가 관리하는 방식이다. 즉, 객체가 필요로 하는 다른 객체를 직접 생성하지 않고, Spring이 자동으로 객체를 주입해주는 방식이다. 이를 통해 객체 간 결합도를 낮출 수 있으며, 유연성과 유지보수성을 높일 수 있다.
대표적으로 세 가지 방식으로 주입을 해준다.
1. 필드 주입
2. 생성자 주입
3. Setter 주입
일반적으로 생성자 주입을 주로 활용한다.
*Spring 4.3 이후 부터는 Autowired를 생략해도 된다.
4. Controller 클래스
컨트롤러는 클라이언트로부터 요청을 받아 서비스에 데이터를 요청하고, 그 결과를 반환한다.
여기서 내가 궁금했던 "쿼리 파라미터" 활용은 아래와 같이 @RequestParam 을 활용한다.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class BookController {
private final BookService bookService;
@Autowired
public BookController(BookService bookService) {
this.bookService = bookService;
}
@GetMapping("/searchBook")
public Book searchBook(@RequestParam String isbn) {
// 서비스 레이어를 통해 ISBN으로 책 정보 조회
return bookService.findBookByIsbn(isbn);
}
}
5. 데이터베이스 설정 (application.properties)
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=yourpassword
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
전체적인 동작의 흐름
1. 클라이언트 요청 : 클라이언트가 /searchBook?isbn=9341893729817로 요청을 보낸다.
2. Controller : BookController가 클라이언트 요청을 받아 ISBN을 BookService로 전달한다.
3. Service : BookService는 BookRepository를 사용하여 데이터베이스에서 해당 ISBN에 맞는 책 정보를 조회한다.
4. Repository : BookRepository는 데이터베이스에서 해당 ISBN을 조회하고 결과를 서비스로 반환한다.
5. 응답 : 컨트롤러가 그 결과를 클라이언트에게 반환한다.
'servlet, jsp' 카테고리의 다른 글
MVC Pattern (0) | 2024.01.28 |
---|---|
JSP - Java Server Page (1) | 2024.01.28 |
Foward & Redirect - 페이지 이동 (0) | 2024.01.28 |
Statement Management - 상태 정보 유지 (1) | 2024.01.28 |
Character Encoding - 문자 처리 (0) | 2024.01.28 |