Spring/MVC 14

[Spring/MVC] WebMvcConfigurer

김영한님 Spring MVC 강의를 통해 공부하다가 Spring MVC에 WebMvcConfigurer 라는 확장 포인트가 있다는 점을 알게 되었다. (강의에서는 ArgumentResolver와 MessageConverter를 WebMvcConfigurer에서 확장할 수 있다 정도만 설명하고 넘어감)Spring MVC에는 대부분의 기능이 이미 구현되어 있어 확장 포인트가 많지 않다고 했는데, WebMvcConfigurer에서는 어떤 부분을 확장할 수 있는지 구체적으로 알아보자. WebMvcConfigurer란?WebMvcConfigurer 는 스프링 부트 혹은 스프링 MVC 애플리케이션에서 MVC 관련 설정을 직접 확장하거나 추가할 수 있게 해주는 확장 포인트 인터페이스이다. 스프링 부트가 제공하는 We..

Spring/MVC 2024.12.24

[Spring MVC] 06. 스프링 MVC - 기본 기능

06. 스프링 MVC - 기본 기능#Spring/MVC정리로깅운영 서버에는 System.out.println()을 사용하지 않고, 로깅 라이브러리를 사용해 로그를 출력해야 한다.SLF4J로그 라이브러리는 Logback, Log4J, Log4J2 등등 수많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공한다.로그 선언private Logger log = LoggerFactory.getLogger(getClass());@Slf4j 롬복에서 사용할 수 있다.로그 사용 예시@Slf4j@RestControllerpublic class LogTestController { @RequestMapping("/log-test") public String logTest() { String name = "Sp..

Spring/MVC 2024.11.24

[Spring MVC] 05. 스프링 MVC - 구조 이해

5. 스프링 MVC - 구조 이해#Spring/MVC정리이전 챕터에서 직접 만들었던 MVC 프레임워크와 아래 스프링 MVC를 비교해보자.1 ~ 8 단계 구조가 같고, 이름만 다르다.FrontController DispatcherServlethandlerMappingMap HandlerMappingMyHandlerAdapter HandlerAdapterModelView ModelAndViewviewResolver ViewResolver(인터페이스)MyView View(인터페이스)달라진 부분을 하나씩 살펴보자DispatcherServletorg.springframework.web.servlet.DispatcherServlet스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있는데, 그게..

Spring/MVC 2024.11.21

[Spring MVC] 04. MVC 프레임워크 만들기

04. MVC 프레임워크 만들기#Spring/MVC정리프론트 컨트롤러 도입 이유 - 챕터 3 마지막에 다룬 내용포워드 중복View로 이동하는 코드가 항상 중복 호출되어야 한다.Thymeleaf 같은 다른 뷰로 변경한다면 전체 코드를 다 변경해야 한다.사용하지 않는 코드특히 HttpServletResponse의 response 객체는 현재 코드에서 사용되지 않는다.이런 HttpServletRequest, HttpServletResponse를 사용하는 코드는 테스트 케이스를 작성하기도 어렵다.공통 처리가 어렵다기능이 복잡해질수록 컨트롤러에서 공통으로 처리해야 하는 부분이 점점 더 많이 증가한다.공통 메서드로 추출해도 되지만, 호출 과정도 중복이고, 호출하는 것을 놓칠 수도 있다.프론트 컨트롤러를 도입해보자...

Spring/MVC 2024.11.20

[Spring MVC] 03. 서블릿, JSP, MVC 패턴

03. 서블릿, JSP, MVC 패턴#Spring/MVC1. 서블릿으로 HTML 동적으로 제공하기서블릿으로 회원 등록 HTML 폼을 제공response.setContentType("text/html");response.setCharacterEncoding("utf-8");PrintWriter w = response.getWriter();w.write("")...자바 코드로 HTML을 제공해야 하므로 쉽지 않은 작업이다. 너무 불편하다회원 데이터가 저장memberRepository.save(member);response.setContentType("text/html");response.setCharacterEncoding("utf-8");PrintWriter w = response.getWriter();...

Spring/MVC 2024.11.19

[Spring MVC] 02. 서블릿

02. 서블릿#Spring/MVC스프링 부트 서블릿 환경 구성스프링 부트는 서블릿을 직접 등록해서 사용할 수 있도록 @ServletComponentScan 을 지원ㅇ한다.서블릿 등록인텔리제이에서 ctrl + o로 오버라이딩 할 수 있는데, 자물쇠 잠겨있는 service(protected)를 오버라이딩해주자. 서블릿이 호출되면, 서비스 메서드가 호출된다.@WebServlet 서블릿 애노테이션name: 서블릿 이름urlPatterns: URL 매핑HTTP 요청을 통해 매핑된 URL이 호출되면 서블릿 컨테이너는 다음 메서드를 실행한다.protected void service(HttpServletRequest request, HttpServletResponse response)HttpServletRequest,..

Spring/MVC 2024.11.19

[Spring MVC] 01. Web Application의 이해

01. Web Application의 이해#Spring/MVCWeb - HTTPHTTP 메시지에 HTML, TEXT, IMAGE, JSON,…. 거의 모든 형태의 데이터를 전송한다.서버간에 데이터를 주고 받을 때도 대부분 HTTP를 사용한다.웹 서버기본적으로 정적 리소스를 제공하고, 기타 부가 기능을 제공한다.정적(파일) HTML, CSS, JS, 이미지, 영상ex) NGINX, APACHE웹 애플리케이션 서버(WAS - Web Application Server)웹 서버 기능을 포함하고, 정적 리소스 제공 기능도 가지고 있다.프로그램 코드를 실행해서 애플리케이션 로직 수행동적 HTML, HTTP API(JSON)서블릿, JSP, 스프링 MVC예) 톰캣(Tomcat) Jetty, Undertow웹 서버 v..

Spring/MVC 2024.11.19

[Spring/입문] 07. AOP

AOPAOP가 필요한 상황모든 메소드의 호출 시간을 측정하고 싶다면?초 단위로 만들었는데 ms 단위로 만들라고 하면??공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern)회원 가입 시간, 회원 조회 시간을 측정하고 싶다면?MemberService 회원 조회 시간 측정 추가package hello.hellospring.service;@Transactionalpublic class MemberService { /** * 회원가입 */ public Long join(Member member) { long start = System.currentTimeMillis(); try { vali..

Spring/MVC 2024.05.13

[Spring/입문] 06. 스프링 DB 접근 기술

스프링 DB 접근 기술H2 데이터베이스 설치순수 Jdbc스프링 JdbcTemplateJPA스프링 데이터 JPAH2 데이터베이스 설치개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공 [https://www.h2database.com]다운로드 및 설치h2 데이터베이스 버전은 스프링 부트 버전에 맞춘다.권한 주기: chmod 755 h2.sh (윈도우 사용자는 x)실행: ./h2.sh (윈도우 사용자는 h2.bat)실행하면 exploler에 콘솔이 뜨는데, 접속이 안되면 주소를 localhost로 해주자데이터베이스 파일 생성 방법jdbc:h2:~/test (최초 한번)~/test.mv.db 파일 생성 확인이후부터는 jdbc:h2:tcp://localhost/~/test 이렇게 접속h2 데이터베이스 버..

Spring/MVC 2024.05.13

[Spring/입문] 회원 관리 예제 - 웹 MVC 개발

회원 관리 예제 - 웹 MVC 개발회원 웹 기능 - 홈 화면 추가HomeController를 만들자package hello.hellospring.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;@Controllerpublic class HomeController { // localhost:8080/ 요청이 오면 이 메서드가 호출되어 home.html이 호출됨 @GetMapping("/") public String home() { return "home"; }}GetMapping("/")는 그냥 첫번째 local..

Spring/MVC 2024.04.29