Controller

Jan 23, 2024
Controller

notion image
 
라우터(=디스패쳐) : 어떤 주소가 들어왔을 때 라우팅(전달 경로를 결정) 함
디스패쳐 : 뭔가 요청이 들어오면 라우팅(추적해서 알려줌)을 해줌
컨트롤러를 만들 책임은 없음
라우팅의 책임만 있음
어진 요청에 대해 적절한 처리기(핸들러)로 라우팅하는 역할을 합니다. 컨트롤러를 만들거나 관리하는 책임은 없이, 단순히 어떤 요청이 어떤 처리기로 전달되어야 하는지 결정
 
누구도 만들 책임이 없는 것은 메인에서 만듦
디스패치에 @AllArgsConstructor에 의존함
생성자로 주입해줌
외부에서 요청이 들어올때마다 하나만 있으면 되는데 new가 계속됨
한번 만들어서 의존시키면 됨
 
의존성 주입(Dependency Injection)
컴포넌트 간의 의존성을 외부에서 주입하여 느슨하게 결합하고 유연성을 확보하는 디자인 패턴
 
Dispatcher 책임 : 라우팅, 적절한 Controlle 찾기
BankController 책임 : 유효성 검사(BODY데이터), 파싱(BODY데이터), 적절한 뷰(DAO) 찾기
어떤 요청에 대한 실질적인 처리를 담당
 
스프링이 라우터를 만들어줌
라우터를 라이브러리로 만들어주는게 엄청나게 어려움
import controller.BankController; import dao.BankDAO; import db.DBConnection; import model.Account; import java.sql.Connection; import java.sql.PreparedStatement; import java.util.List; import java.util.Scanner; public class BankApp { public static void main(String[] args) { String url = "selectAll"; BankDAO dao = new BankDAO(); BankController con = new BankController(dao); //의존성 주입(dependention injection)//만들 책임이 없다 //디스패처에서 만들면 계속 new해서 만들어야 됨 Dispatcher dis = new Dispatcher(con); dis.route(url); } }
import controller.BankController; import lombok.AllArgsConstructor; /** * 책임 : 라우팅 */ @AllArgsConstructor public class Dispatcher { private BankController con; // public Dispatcher(BankController con){ //필요한 애한테 주입 // this.con=con; // } public void route(String url){ //라우터(ex)뭐들어오면 일로가), 디스페처(추적해서 찾아줌) if(url.equals("insert")){ con.insert(); } else if (url.equals("delete")) { con.delete(); } else if (url.equals("update")) { con.update(); } else if (url.equals("selectOne")) { con.selectOne(); } else if (url.equals("selectAll")) { con.selectAll(); } } }
package controller; import dao.BankDAO; import lombok.AllArgsConstructor; /** *책임 : 유효성검사(바디데이터), 파싱(바디데이터), 적절한 DAO 찾기 SRP : 책임을 적게 가져라 */ @AllArgsConstructor public class BankController { private BankDAO dao; public void insert(){ //1. 파싱 //2. 유효성 검사 (값이 유효한지 검사한다 ex)글자수가 초과하거나 값의 조건에 맞지 않을텐데 악의적인 접근을 막기위해(보안)) //3. dao 찾기 System.out.println("controller : insert"); dao.insert("1234", 1000); } public void delete(){ System.out.println("controller : delete"); System.out.println(5); } public void update(){ System.out.println("controller : update"); dao.updateByNumber(1000,4); } public void selectOne(){ System.out.println("controller : selectOne"); dao.selectByNumber(4); } public void selectAll(){ System.out.println("controller : selectAll"); dao.selectAll(); } }
 
Share article

vosw1