Spring

[Spring] Http 요청 - 응답 이해하기

ye11 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. 요청한 값 리턴하기

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

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