Spring
스프링 MVC 1 - 로깅 간단히 알아보기
스프링 MVC 1 - 로깅 간단히 알아보기
2022.07.14로깅 간단히 알아보기 앞으로 로그를 사용할 것이기 때문에, 이번시간에는 로그에 대해서 간단히 알아보자. 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 출력한다. 참고로 로그 관련 라이브러리도 많고, 깊게 들어가면 끝이 없기 때문에, 여기서는 최소한의 사용 방법만 알아본다. 로깅 라이브러리 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging)가 함께 포함된다. 스프링 부트 로깅 라이브러리는 기본으로 다음 로깅 라이브러리를 사용한다. SLF4J - http://www.slf4j.org Logback - http://logback.qos.ch 로그 ..
스프링 MVC 1 - 프로젝트 생성
스프링 MVC 1 - 프로젝트 생성
2022.07.14프로젝트 생성 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성 https://start.spring.io 프로젝트 선택 Project: Gradle Project Language: Java Spring Boot: 2.4.x Project Metadata Group: hello Artifact: springmvc Name: springmvc Package name : hello.springmvc Packaging: Jar(주의!) Java: 11 Dependencies: Spring Web, Thymeleaf, Lombok 주의! Packaging는 War가 아니라 Jar를 선택하자. Jar를 사용하는 것이 좋다. 앞으로 스프링 부트를 사용하면 이 방식을 주로 사용하게 된다. Jar를 사용하면 ..
스프링 MVC 1 - 정리(스프링 MVC - 구조 이해)
스프링 MVC 1 - 정리(스프링 MVC - 구조 이해)
2022.07.12정리(스프링 MVC - 구조 이해) 스프링 MVC 전체 구조 스프링 MVC의 구조는 고객의 HTTP 요청이 오면, 프론트 컨트롤러 역할을 하는 DispatcherServlet 으로 가서, 핸들러 매핑에서 스프링에서 등록해놓은 핸들러를 조회하고, 그중에서 핸들러 매핑이, 처리할 수 있는 핸들러를 찾아준다. 그것을 핸들러 어댑터 목록에 던지면, 핸들러 어댑터가 "나 이 핸들러 처리할 수 있어!!"하고 해당 핸들러 어댑터가 튀어나온다. 그리고 핸들러 어댑터를 통해서 실제 핸들러를 호출하고 반환 해준다. 이때 핸들러 어댑터는 ModelAndView로 반환 해준다. 그리고나서 뷰 리졸버를 호출해서 실제 뷰를 찾고, 뷰가 랜더가 되면서(모델 호출) HTTP응답이 고객에게 나가게 된다. 핸들러 매핑과 핸들러 어댑터 ..
스프링 MVC 1 - 스프링 MVC - 실용적인 방식
스프링 MVC 1 - 스프링 MVC - 실용적인 방식
2022.07.12스프링 MVC - 실용적인 방식 MVC 프레임워크 만들기에서 v3은 ModelView를 개발자가 직접 생성해서 반환했기 때문에, 불편했던 기억이 날 것이다. 물론 v4를 만들면서 실용적으로 개선한 기억도 날 것이다. 스프링 MVC는 개발자가 편리하게 개발할 수 있도록 수 많은 편의 기능을 제공한다. 실무에서는 지금부터 설명하는 방식을 주로 사용한다. SpringMemberControllerV3 Model 파라미터 save(), members() 를 보면 Model을 파라미터로 받는 것을 확인할 수 있다. 스프링 MVC 도 이런 편의 기능을 제공한다. ViewName 직접 반환 뷰의 논리 이름을 반환할 수 있다. @RequestParam 사용 스프링은 HTTP 요청 파라미터를 @RequestParam 으로..
스프링 MVC 1 - 스프링 MVC - 컨트롤러 통합
스프링 MVC 1 - 스프링 MVC - 컨트롤러 통합
2022.07.12스프링 MVC - 컨트롤러 통합 @RequestMapping을 잘 보면 클래스 단위가 아니라 메서드 단위에 적용된 것을 확인할 수 있다. 따라서 컨트롤러 클래스를 유연하게 하나로 통합할 수 있다. SpringMemberControllerV2 조합 컨트롤러 클래스를 통합하는 것을 넘어서 조합도 가능하다. 다음 코드는 /springmvc/vc/members 라는 부분에 중복이 있다. @RequestMapping("/springmvc/v2/members/new-form") @RequestMapping("/springmvc/v2/members/save") @RequestMapping("/springmvc/v2/members") 물론 이렇게 사용해도 되지만, 컨트롤러를 통합한 예제 코드를 보면 중복을 어떻게 제거..
스프링 MVC 1 - 스프링 MVC - 시작하기
스프링 MVC 1 - 스프링 MVC - 시작하기
2022.07.11스프링 MVC - 시작하기 스프링이 제공하는 컨트롤러는 애노테이션 기반으로 동작해서, 매우 유연하고 실용적이다. 과거에는 자바언어에 애노테이션이 없기도 했고, 스프링도 처음부터 이런 유연한 컨트롤러를 제공한 것은 아니다. @RequestMapping 스프링은 애노테이션을 활용한 매우 유연하고, 실용적인 컨트롤러를 만들었는데 이것이 바로 @RequestMapping 애노테이션을 사용하는 컨트롤러이다. 다들 한번쯤 사용해보았을 것이다. 여담이지만 과거에는 스프링 프레임워크가 MVC 부분이 약해서 스프링을 사용하더라도 MVC 웹 기술은 스트럿츠 같은 다른 프레임워크를 사용했었다. 그런데 @RequestMapping 기반의 애노테이션 컨트롤러가 등장하면서, MVC 부분도 스프링의 완승으로 끝이 났다. @Requ..