ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SpringBoot - Bean추가, Configuration, Path Variable
    FrameWork/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

    댓글

Designed by Tistory.