Wanna be Brilliant Full-Stack Developer

2/24 SPRING Controller 기본 동작 이해하기! 본문

Some Memos/Spring 개념

2/24 SPRING Controller 기본 동작 이해하기!

Flashpacker 2022. 2. 24. 15:07


 

누군가가 요청을 하는데 로그인 요청을 하게되면 이 스프링 부트는 서블릿이라는 걸로 만들어졌다.

이 자바에서 서블릿이 머냐면 자바로 웹을 할수 있는 기술이다. 그게 서블릿 기술이다.

이 서블릿으로 만들어졌는데 이 서블릿 파일 자체도 자바파일이다.

그러면 로그인 요청을 하려면 Login.java 파일에 요청을 해야한다!

 

내가 회원가입을 요청하려면 Join.java 파일에 요청을 해야한다. 

 

내가 게시글 쓰기 요청을 할거면 Write.java 파일에 요청을 해야한다

 

이렇게 요청을 할때마다 자바 파일이 호출이 되니까 너무 번거롭다. 파일이 계속 늘어나야하니까 

요청의 종류가 3개이면 3개의 java 파일이 필요하다.

근데 하나의 JAVA파일에서 모든 요청을 받는 어떤 fronController라는것이 필요하다. 

컨트롤 한다는것이다 앞단에서! 

 

로그인 요청과 회원가입 요청과 게시을 요청을 한군데에서 처리하게 되면 이것을 FrontController.java 이렇게 처리할수 있다. 

이게 문제가 있는데 만약에 지금은 요청이 3개밖에 없지만 나중에 100개가 된다고 하면 100개의 요청이 파일 하나에 몰리게되면 , 이 파일에 너무나 많은 if else if 문이 들어가서 복잡해진다! 

 

그래서 도메인 별로 분기하는게 좋다. 

하나의 요청마다 하나의 파일이 있는것도 좋지 않고 모든 요청을 한군데에서도 처리하는것도 좋지 않다.

그래서 이거를 어떻게 하냐면

만약에 유저라는 테이블이 있고 이건 유저를 관리하는 테이블이 될거고

로그인 요청을 하거나 회원가입 요청을 할떄는 이 요청을 한군대에서 UserController에서 처리하게 하고 

도메인 별로 나누는건데 도메인이라는게 무슨뜻이나면 이세상에는 남자만 여자만 있다.

그래서 남자와 여자 이렇게 범주를 주는것이다. 

Board라는 테이블이 있으면 이건 게시글을 작성하는 테이블이 될거다

글쓰기, 글 삭제, 글 수정 이런것들을 전부다 BoradController에서 처리하겠다. 

Product라는 테이블이 있으면 상품을 관리하는 테이블이 될거다. 

상품 등록, 상품 목록보기에대한 범주를 만들어서 이 도메인을 ProductController에서 처리하겠다 

이렇게 나누는것이 훨씬더 좋다

 

FrontController에 패턴을 따르면서 조금 도메인별로 컨트롤러를 나누는것이다. 

 

또 여기서 문제가 머냐면 이런 요청이 들어올떄 이 요청을 어디에 보내야할지 분기해주는애가 필요한데

분기해주는애가 Dispatcher이다.  이걸 정확히 말하면 Servlet Dispather이라고 한다 혹은 RequestDispatcher이라고 한다. 앞에 나온말은 중요하지 않고 똑같은 말이다. 

 

이 디스패처를 가지고 분기를 하는것이다.

스프링 프레임워크는 디스패처는 내가 안만들어도되고 이미 만들어져있고 컨트롤러도 내가 사용하고 싶으면 이미 만들어져있기 떄문에 내가 어떤 정의만 내리면 바로 만들수 있도록 설정이 되어있다! 

이 구조로 스프링, 스프링부트는 만들어져있다. 

우리가 만들어야하는건 컨트롤러만 만들고 컨트롤러만 잘다루면 어떤 요청에대한 처리를 다 할수 있다!