Spring 35

[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

[JPA] 엔티티 매핑

엔티티 매핑#Spring/DB/JPA/기본엔티티 매핑에 사용하는 대표적인 애노테이션은 다음과 같다.객체와 테이블 매핑 : @Entity, @Table필드와 칼럼 매핑 : @ColumnPK 매핑 : @Id연관관계 매핑 : @ManyToOne, @JoinColumn객체와 테이블 매핑@Entity@Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다.JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수주의기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)JPA에서 reflection, proxy 등의 기술을 사용하기 때문에 기본 생성자가 필요하다.final 클래스, enum, interface, inner 클래스 사용X저장할 필드에 final 사용 X@Entity 속성..

Spring/JPA 2024.11.08

[JPA] 영속성 관리

영속성 관리#Spring/DB/JPAJPA의 핵심 두 가지객체와 관계형 데이터베이스 매핑하기영속성 컨텍스트영속성 관리에 대해 자세히 살펴보자엔티티 매니저 팩토리와 엔티티 매니저영속성 컨텍스트EntityManager.persist(entity);“엔티티를 영구 저장하는 환경”엔티티를 영속성 컨텍스트에 저장한다.DB에 저장하는게 아님영속성 컨텍스트는 논리적인 개념눈에 보이지 않는다.엔티티 매니저를 통해서 영속성 컨텍스트에 접근엔티티의 생명주기비영속 (new/transient)영속성 컨텍스트와 전혀 관계가 없는 새로운 상태영속 (managed)영속성 컨텍스트에 관리되는 상태준영속 (detached)영속성 컨텍스트에 저장되었다가 분리된 상태삭제 (removed)삭제된 상태비영속Member member = new..

Spring/JPA 2024.11.06