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