ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] Http 요청 - 응답 이해하기
    Spring 2023. 6. 29. 23:24

    스프링의 전체적인 흐름을 정리해보자

     

    1. tomcat에  http요청을 보낸다

    우리가 주소창에 주소를 입력했을때 발생하는 일이다.

     

     

     

    2. 스프링 부트의 디스패처 서블릿이 url을 분석하여 해당 컨트롤러를 찾는다.

    디스패치가 아니라.. 디스패처 입니다..^^ 잘못 적었네

    만약 사용자가 http://localhost/test 주소를 입력했다면 

     

    <TestController.java>

    package me.kimyerin.springbootdeveloper;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    //import java.lang.reflect.Member;
    import java.util.List;
    
    @RestController
    public class TestController {
    
        @Autowired
        TestService testService;
    
        @GetMapping("/test") //라우터 역할: http 요청과 메서드를 연결하는 장치
        public List<Member> getAllMembers(){
            List<Member> members = testService.getAllMembers();
            return members;
        }
    }

    @GetMapping("/test") 을 통하여 해당 Controller에게 요청을 넘겨준다

    그럼 요청을 처리할 수 있는 getAllMembers()와 매치가 된 것이다.

     

     

     

    3. 필요한 데이터 가져오기

    getAllMember() 메서드에서는 비즈니스 계층과 퍼시스턴스 계층을 통해 데이터를 가져온다.

     

     

    <TestService.java>

    package me.kimyerin.springbootdeveloper;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service
    public class TestService {
        @Autowired
        MemberRepository memberRepository;
    
        public List<Member> getAllMembers() {
            return memberRepository.findAll();
        }
    }

     

    <MemberRepository.java>

    package me.kimyerin.springbootdeveloper;
    
    
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public interface MemberRepository extends JpaRepository<Member, Long> {
    }

     

    4. 요청한 값 리턴하기

    원하는 데이터를 가져온 후 요청한 클라이언트에게 다시 넘겨준다.

    전체적인 구조를 보면 이렇다.

Designed by Tistory.