오늘은 어제의 연장선쯤이랄까.. controller에서 처리하던 service, dao를 나누고 CRUD 작업을 진행했다. 간단히만 정리해보려한다
1) 게시판에 글을 작성하고, 조회하고, 수정하고, 삭제하는 로직을 만든다. 먼저 글을 작성하기 위해 작성 페이지를 만들고 controller에 매핑을 위한 메소드를 만든다.
2) 기존 controller에선 SqlSession 객체를 생성해 DB에 접근하는 메소드를 바로 사용했었다. 하지만 위처럼 service 서블릿의 메소드를 호출하여 기능을 분배한다. 여기서 BoardService는 인터페이스로 인터페이스를 구현하는 하위 클래스가 포함되어? 호출이 된다. 이를 위해 service 인터페이스, 인터페이스 구현 클래스, dao 인터페이스, 인터페이스 구현 클래스를 만든다. controller에서 @Autowired한건 인터페이스들이지만 실제 런타임시 호출되는건 인터페이스를 구현한 클래스들이다. 인터페이스는 객체 생성이 되지 않는다. 인터페이스를 구현하는 클래스의 객체를 참조하는 변수의 타입으로 받게할 수 있지만 실제 생성되는건 인터페이스를 구현한 클래스의 객체가 된다. 그리고 이 클래스들의 객체를 생성하기위해 @Service, @Repository를 써서 spring container에 등록해준다. @Component 처럼 쓸 수 있다.
3) 게시글 등록 페이지에서 글을 작성해보고 결과를 확인한다.
4) 게시글 조회, 수정, 삭제 로직 또한 service와 dao 서블릿으로 기능을 분배하여 로직을 생성한다.
5) 결과를 확인한다.
6) 오늘 어노테이션중 @PathVariable에 대해서도 배웠다. 기존 form get방식을 통해 데이터를 전송하면 key, value값이 주소창에 쿼리스트링으로 전송되는걸 확인할 수 있었다. 쿼리스트링을 더 깔끔하게 표현할 수 있는 방법으로 @PathVariable을 사용할 수 있다.