-
SpringBoot - Bean추가, Configuration, Path VariableFrameWork/Spring&Spring-boot 2024. 2. 19. 09:38
Bean추가
Java 형태의 Bean으로 반환시켜주는 메소드
@RestController public class HelloWorldController { //GET //URI - /hello-world //@RequestMapping(method=RequestMethod.GET, path="/hello-world") @GetMapping(path = "/hello-world") public String helloWorld(){ return "Hello World"; } @GetMapping(path = "/hello-world-bean") public HelloWorldBean helloWordBean(){ return new HelloWorldBean("Hello World"); } }
두번 째 메서드는 단순한 문자를 반환시켜 주는 것이 아니라 Java형태의 bean(오브젝트 형태)을 반환한다.
💡 tip) POJO(Plain Old Java Object)
POJO는 자바 프로그래밍 언어에서 사용되는 일반적인 객체로 특별한 제약이나 클래스 확장, 인터페이스 구현 등을 요구 하지 않는 자바 객체를 지칭한다.
Spring Boot에서 POJO의 역할
- 데이터 모델 : 데이터베이스 테이블을 나타내는 엔티티 클래스로 사용될 수 있다. 여기서 POJO 인스턴스는 테이블의 한 행에 해당하고, POJO의 필드는 테이블의 칼럼을 나타낸다.
- 비지니스 로직 : 비지니스 로직을 구현하는데 사용한다. 서비스 레이어에서 비지니스 규칙을 처리하거나 데이터 변환 로직을 담당할 수 있다.
- DTO(Data Transfer Object) : 데이터 전송 객체로 사용될 때, POJO는 계층간 데이터 전송을 단순화 한다. 예를 들어 클라이언트와 서버간 데이터를 부고 받을 때 사용한다.Lombok 애노테이션
@Data
- Getter 메소드 : 클래스의 모든 필드에 대한 getter 메소드를 생성한다.
- Setter 메소드 : 클래스의 모든 non - final 필드에 대한 setter 메소드를 생성한다.
- toStfing() 메소드 : Object 클래스에서 상속 받은 해당 메소드를 클래스의 객체를 문자열 형태로 반환하도록 자동으로 오버라이딩해준다.
- equals() 메소드 : Object 클래스에서 상속 받은 메소드를 물리적 동일성이 아니라 논리적 동일성에 대해 비교하는 메서드로 오버라이딩 해준다.
- hashCode() : 메소드와 객체의 해시 코드를 반환하는 해당 메소드를 생성한다.
@AllArgConstructor
- 해당 클래스의 모든 필드 변수를 매개변수로 받아 생성자를 자동으로 생성해 주는 역할을 한다.
Configuration
Spring Boot 동작 원리
Spring Boot의 설정파일 : application.yml or application.properties
application.properties
logging.level.org.springframework = debug
application.yml
logging: level: org.springframework : debug
위 설정으로 spring boot 프레임워크가 사용하고 있는 bean의 상태들이 출력되는 것을 확인할 수 있다.
Spring Boot Auto Configuration
- DispatcherServletAutoConfiguration
- 사용자의 요청처리를 받기위해 DispatcherServlet 빈 로딩
- ErrorMvcAutoConfiguration
- 에러처리를 하기위한 빈 로딩
- HttpMessageConvertersAutoConfiguration -> JSON convert
- 사용자 요청에 대한 비지니스 로직을 처리한다 그리고 결과 값을 다시 사용자에게 전달하기 위한 데이터를 Json으로 컨버팅
Dispatcher Servlet
디스패쳐 서블릿 이라는 건 서블릿 컨테이너가 HTTP 프로토콜로 들어 왔던 모든 요청을 처리하기 위해서 가장 앞단에서 모든 요청을 처리한다. 즉 중앙 집중식 요청식 처리기계로 프론트 컨트롤러 역할을 한다. 일종의 Gate역할을 한다.
쉽게 말해서 사용자의 모든 요청은 디스패쳐 서블릿에서 시작이되고 디스패쳐 서블릿에서 끝난다.
*dispatch : (편지 소포 메시지를) 보내다[발송하다]
- 클라이언트의 모든 요청을 한 곳으로 받아서 처리
- 요청에 맞는 Handler로 요청을 전달
- Handler의 실행 결과를 Http Response 형태로 만들어서 변환
RestController
- Spring4부터 @RestController 지원
- @Controller + @ResponseBody
- View를 갖지 않는 REST Data(Json/XML)를 변환
Path Variable (가변 URI 사용)
- http://localhost:8080/bookss/
- http://localhost:8080/books/1
- http://localhost:8080/books/123
//hello-world-bean/path-variable/kennet @GetMapping(path = "/hello-world-bean/path-variable/{name}") public HelloWorldBean helloWorldBean(@PathVariable String name){ return new HelloWorldBean(String.format("Hello World, %s", name)); }
[출처 - Spring Boot 3.x를 이용한 RESTful Web Service 개발, 저 Dowon Lee]
https://www.inflearn.com/course/spring-boot-restful-web-services
'FrameWork > Spring&Spring-boot' 카테고리의 다른 글
Spring Boot API - Swagger, Actuator, HAL Explorer (0) 2024.02.21 Spring Boot API - User Service, Exception Handing... (0) 2024.02.19 SpringBoot - SpringBoot API 시작하기 (0) 2024.01.31 스프링 MVC 2 - 메시지, 국제화(소개, 스프링 메시지 소스 설정) (0) 2023.12.07 Spring 기본 37 - 웹 스코프(request스코프 예제 만들기) (1) 2023.11.30