[스프링부트 blogV3] 1. java로 이해하는 spring의 흐름

silver's avatar
Feb 03, 2025
[스프링부트 blogV3] 1. java로 이해하는 spring의 흐름

1. App

의존관계를 파악하여 repository > service > controller > dispatcherServlet 순으로 띄워서 의존성을 주입해준다.
public class App { public static void main(String[] args) { // new로 메모리에 띄우기 -> 의존관계 순서로 띄워야한다. Repository repository = new Repository(); Service service = new Service(repository); Controller con = new Controller(service); DispatcherServlet ds = new DispatcherServlet(con); ds.route("/"); // spring에서는 tomcat이 이 루트를 때리면 dispatcherServlet을 때리고 controller로 넘어간다. } }

2. DispatcherServlet

: controller 의존성을 주입한다. DispatcherServlet에서 오류가 발생한다면 throw로 위임 시에는 main으로 가서 터지기 때문에 DispatcherServlet에서 try-catch해야한다.
public class DispatcherServlet { private final Controller con; // 생성자 public DispatcherServlet(Controller con) { this.con = con; } public void route(String path){ if(path.equals("/")){ con.list(); }else if(path.equals("/board")) { con.detail(); }else{ // 여기서 못 찾으면 예외를 터트려야 해 System.out.println("404 not found"); } } }

3. Controller - 응답 책임

: Service의존성을 주입한다.
import java.util.List; public class Controller { /** * 여기서는 new해서 가져오는 것이 아니라 처음에 initialized한 것을 가져온다. -> new 여러번 하지 않아도 됨 * main에서 처음에 띄워는 것 -> spring initialize -> 이 때 뜨는 객체들을 bean이라고 한다. */ private Service service; public Controller(Service service) { this.service = service; } public void list(){ List<Integer> models = service.목록보기(); for(Integer model : models){ System.out.println("rendering : "+model); } } public void detail(){ int model = service.상세보기(); System.out.println("rendering : "+model); } }

4. Service

: Repository 의존성을 주입한다.
import java.util.List; public class Service { /** * has - composition 필요한 것 - (패티,빵, 야채 - 컴포지션)로 만들어진 치즈버거(class) * is - 상속 - 치즈버거는 버거다(버거를 상속) */ // 필드선언 부터 생성자까지 composition이다. - 필요함 private final Repository repo; public Service(Repository repo) { this.repo = repo; } public List<Integer> 목록보기() { return repo.findAll(); } public int 상세보기() { return repo.findByID(); } }

5. Repository - db처리

import java.util.Arrays; import java.util.List; public class Repository { public List<Integer> findAll() { return Arrays.asList(1,2,3,4,5); } public int findByID() { return 1; } }
Share article

silver