스프링&스프링부트
-
[스프링MVC - 1편] 스프링 MVC 기본기능 - 요청 매핑스프링&스프링부트 2025. 1. 28. 14:03
요청 매핑MappingController@RestControllerpublic class MappingController { private final Logger log = LoggerFactory.getLogger(getClass()); @RequestMapping("/hello-basic") public String helloBasic() { log.info("helloBasic"); return "ok"; }}@RequestMapping("/hello-basic")/hello-basic URL 호출이 오면 이 메서드가 실행되도록 매핑한다대부분의 속성을 배열[]로 제공하므로 {"/hello-basic", "/hello-go"}와 같이 다중 설정이 가능하다..
-
[스프링MVC - 1편] 스프링 MVC 기본기능 - 프로젝트 생성 및 로그스프링&스프링부트 2025. 1. 28. 13:22
스프링부트 프로젝트 생성https://start.spring.io/ Packaging - JarJSP를 사용하지 않기 때문에 Jar를 사용하는 것이 좋다Jar를 사용하면 항상 내장 서버(톰캣등)를 사용하고, webapp 경로도 사용하지 않는다내장 서버 사용에 최적화되어 있는 기능이다Packaging - WarWar를 사용하면 내장 서버도 사용가능 하지만, 주로 외부 서버에 배포하는 목적으로 사용한다 Welcome 페이지 스프링 부트에 Jar를 사용하면 /resources/static/ 위치에 index.html 파일을 두면 Welcome 페이지로 처리해준다 로깅로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 ..
-
[스프링MVC - 1편] 스프링 MVC 시작스프링&스프링부트 2025. 1. 27. 14:15
스프링 MVC - 시작하기@RequestMapping스프링은 애노테이션을 활용한 매우 유연하고, 실용적인 컨트롤러를 만들었는데 이것이 바로 @RequestMapping 애노테이션을 사용하는 컨트롤러이다RequestMappingHandlerMappingRequestMappingHandlerAdapter 1. SpringMemberFormControllerV1 - 회원 등록 폼@Controllerpublic class SpringMemberFormControllerV1 { @RequestMapping("/springmvc/v1/members/new-form") public ModelAndView process() { return new ModelAndView("new-form");..
-
[스프링MVC - 1편] 스프링 MVC 전체 구조스프링&스프링부트 2025. 1. 27. 13:15
SpringMVC 구조 DispatcherServlet 구조 살펴보기- org.springframework.web.servlet.DispatcherServlet스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있다스프링 MVC의 프론트 컨트롤러가 바로 디스패처 서블릿(DispatcherServlet)이다그리고 이 디스패처 서블릿이 바로 스프링 MVC의 핵심이다 요청 흐름서블릿이 호출되면 HttpServlet이 제공하는 service()가 호출된다스프링 MVC는 DispatcherServlet의 부모인 FrameworkServlet에서 service()를 오버라이드 해두었다FrameworkServlet.service()` 를 시작으로 여러 메서드가 호출되면서 DispatcherServlet.doDi..
-
[스프링MVC - 1편] MVC 프레임워크 만들기 (4)스프링&스프링부트 2025. 1. 12. 19:46
유연한 컨트롤러1 - v5어댑터 패턴지금까지 우리가 개발한 프론트 컨트롤러는 한가지 방식의 컨트롤러 인터페이스만 사용할 수 있다ControllerV3, ControllerV4는 완전히 다른 인터페이스이며 호환이 불가능하다어댑터 패턴을 사용해서 프론트 컨트롤러가 다양한 방식의 컨트롤러를 처리할 수 있도록 변경한다 V5 구조핸들러 어댑터 : 중간에 어댑터 역할을 하는 어댑터가 추가되었는데 이름이 핸들러 어댑터이다 여기서 어댑터 역할을 해주는 덕분에 다양한 종류의 컨트롤러를 호출할 수 있다핸들러 : 컨트롤러의 이름을 더 넓은 범위인 핸들러로 변경했다 그 이유는 이제 어댑터가 있기 때문에 꼭 컨트롤러의 개념 뿐만 아니라 어떠한 것이든 해당하는 종류의 어댑터만 있으면 다 처리할 수 있기 때문이다 1. MyHa..
-
[스프링MVC - 1편] MVC 프레임워크 만들기 (3)스프링&스프링부트 2025. 1. 12. 18:28
단순하고 실용적인 컨트롤러 - V4v3 컨트롤러는 서블릿 종속성을 제거하고 뷰 경로의 중복을 제거하는 등, 잘 설계된 컨트롤러이다그런데 실제 컨트톨러 인터페이스를 구현하는 개발자 입장에서 보면, 항상 ModelView 객체를 생성하고 반환해야 하는 부분이조금은 번거롭다좋은 프레임워크는 아키텍처도 중요하지만, 그와 더불어 실제 개발하는 개발자가 단순하고 편리하게 사용할 수있어야 한다소위 실용성이 있어야 한다이번에는 v3를 조금 변경해서 실제 구현하는 개발자들이 매우 편리하게 개발할 수 있는 v4 버전을 개발한다 V4 구조 1. ControllerV4public interface ControllerV4 { String process(Map paramMap, Map model);} 2. Member..
-
[스프링MVC - 1편] MVC 프레임워크 만들기 (2)스프링&스프링부트 2025. 1. 12. 14:21
Model 추가 - v3서블릿 종속성 제거컨트롤러 입장에서 HttpServletRequest, HttpServletResponse이 꼭 필요할까?요청 파라미터 정보는 자바의 Map으로 대신 넘기도록 하면 지금 구조에서는 컨트롤러가 서블릿 기술을 몰라도 동작할 수 있다그리고 request 객체를 Model로 사용하는 대신에 별도의 Model 객체를 만들어서 반환하면 된다현재 구현하는 컨트롤러가 서블릿 기술을 전혀 사용하지 않도록 변경한다 뷰 이름 중복 제거컨트롤러에서 지정하는 뷰 이름에 중복된다컨트롤러는 뷰의 논리 이름을 반환하고, 실제 물리 위치의 이름은 프론트 컨트롤러에서 처리하도록 단순화한다이렇게 해두면 향후 뷰의 폴더 위치가 함께 이동해도 프론트 컨트롤러만 고치면 된다/WEB-INF/views/n..
-
[스프링MVC - 1편] MVC 프레임워크 만들기 (1)스프링&스프링부트 2025. 1. 12. 13:27
프론트 컨트롤러 패턴 소개프론트 컨트롤러 도입 전 프론트 컨트롤러 도입 후 FrontController 패턴 특징프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출입구를 하나로공통 처리 가능프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 스프링 웹 MVC와 프론트 컨트롤러스프링 웹 MVC의 핵심도 바로 FrontController이다스프링 웹 MVC의 DispatcherServlet이 FrontController 패턴으로 구현되어 있다 프론트 컨트롤러 도입 - v1[V1 구조 ] 1. ControllerV1public interface ControllerV1 { void process(HttpServletRequ..