SpringMVC

Project

[Project Winter/#9] Dependency Injection 기능 개발(IoC)

Project Winter DI 기능을 구현하며 드디어 계획했던 기능을 모두 구현했다. 스프링의 핵심이라고 할 수도 있는 IoC 역할을 구현해서 결합도도 낮추고 개발 편의성을 낮출 수 있도록 했다. @Autowired @Target({ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR}) @Retention(RetentionPolicy.RUNTIME) public @interface Autowired { } @Autowired 애노테이션을 개발해 의존성 주입을 해줄 생성자, 필드, 메서드에 애노테이션을 명시할 수 있도록 했다. 이 애노테이션이 붙은 생성자, 필드, 메서드는 백엔드 컨테이너에서 빈 주입을 해주면 된다. BeanFactory 수정 ..

Project

[Project Winter/#8] HandlerExceptionResolver 기능 개발

Project Winter 계획했던 기능 중 MVC 로직에 직접적인 영향을 주는 기능으로 마지막이었던 기능인 HandlerExceptionResolver 기능을 마무리했다. 스프링의 모든 ExceptionResolver 를 구현하진 못했지만 기본적인 HandlerExceptionResolver 인터페이스를 통해 예외를 핸들링하도록 구현했다. HandlerExceptionResolver public interface HandlerExceptionResolver { ModelAndView resolveException(HttpServletRequest req, HttpServletResponse res, Object handler, Exception ex); } 개발자가 예외를 핸들링 로직을 정의할 인터페이..

Project

[Project Winter/#7] Configurer, Interceptor 기능 개발

Project Winter MVC 의 기본적인 기능은 마무리 했고 Interceptor 를 구현할 차례이다. 사실 MVC 와 Ioc, DI 정도만 할걸.... 하는 후회가 조금 들지만 막상 구현을 끝내면 성취감도 좋고 계획한건 마무리 하는 성격이라 열심히 진행중이다. Interceptor 를 하기 앞서 Spring 은 WebMvcConfigurer 를 구현한 클래스에서 addInterceptors() 메서드를 통해 HandlerInterceptor 를 등록하기 때문에 Configurer 기능을 먼저 개발했다. WebMvcConfigurer public interface WebMvcConfigurer { default void addInterceptors(InterceptorRegistry registry..

Project

[Project Winter/#6] View 기능 개발

Project Winter 지금까지 구현해오던 MVC 기능 중 Model, View 를 개발과정이다. 간단하게 JSP 를 이용한 view 를 개발했다. View public interface View { void render(Map model, HttpServletRequest req, HttpServletResponse res) throws Exception; } 생성된 View 에 따라 각각 알맞은 방법으로 렌더링 해주기 위한 메서드를 선언해뒀다. JspView public class JspView implements View { private final String viewName; public JspView(String viewName) { this.viewName = viewName; } @Ov..

Project

[Project Winter/#5] Controller 기능 구현

Project Winter 지난 #3-Contoller 기능 구현 중 문제에서 생긴 bean 관련 문제를 해결하고 다시 컨트롤러 기능을 구현했다. 원랜 인터페이스 기반 컨트롤러 기능만 일단 구현하려 했지만 bean 기능을 구현한 김에 애노테이션 기반 컨트롤러까지 진행했다. 컨트롤러 인터페이스 기반 컨트롤러 인터페이스 package com.project.winter.mvc.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public interface Controller { String handleRequest(HttpServletRequest req, HttpServl..

Project

[Project-Winter/#3] Contoller 기능 구현 중 문제

Project Winter Controller 기능 개발 서버 기능을 구현 후 예정대로 Controller 기능 개발을 하던 중 문제를 만났다. Controller interface Controller { public Object handle(HttpServletRequest req, HttpServletResponse res); } 이렇게 컨트롤러 인터페이스를 만들고 이를 구현한 컨트롤러 클래스들을 실제 핸들러로 사용하고자 했다. HandlerMapping public interface HandlerMapping { void init(); Object findHandler(HttpServletRequest req); } HandlerMapping 을 구현한 클래스로 http method, uri 를 C..

Project

[Project Winter/#2] front-controller 패턴 적용하기(feat. DispatcherServlet)

Project Winter 본격적으로 프로젝트를 시작하기 앞서, Spring의 핵심인 DispatcherServlet을 생성하였다. DispatcherServlet은 WAS 에서 받은 모든 Http 요청을 받은 다음에, 각 uri가 매핑된 컨트롤러를 찾아 개발자가 정의한 작업 수행을 호출하는 역할을 한다. 진행중인 프로젝트에서도 동일하게 'DispathcerServlet'이라는 이름으로 Servlet을 등록해 모든 요청을 받게 하였다. DispatcherServlet @WebServlet("/") public class DispatcherServlet extends HttpServlet { private static final Logger log = LoggerFactory.getLogger(Dispat..

djawnstj
'SpringMVC' 태그의 글 목록