빌드 관리 도구 - 메이븐(Maven)과 그래들(Gradle)
·
Back-End/Spring Boot
빌드 관리 도구란? 빌드 : 소스코드 파일을 컴파일에서 실행할 수 있게 변환하는 과정 또는 결과물 빌드 관리 도구 : 컴파일 과정에서 필요한 라이브러리들을 자동으로 관리해주는 도구 최근에는 Maven과 Gradle이 많이 사용된다. 빌드 관리 도구가 수행 하는 작업 종속성 다운로드 소스코드를 바이너리코드로 컴파일 바이너리 코드를 패키징 테스트 실행 프로덕션 시스템에 배포 메이븐(Maven) 메이븐(Maven)이란? 자바용 프로젝트 Lifecycle 관리 목적 빌드 도구 아파치 Ant의 대안으로 만들어졌다. → 스크립트 작성이 많고, 라이브러리 의존관리가 어려움 아파치 라이센스로 배포되는 오픈 소스 소프트웨어 메이븐의 특징 LifeCycle : 정해진 Lifecycle에 의하여 작업을 수행, 전반적인 프로..
Spring MVC - 로깅, 로그 사용
·
Back-End/Spring MVC
Spring MVC - 로깅, 로그 사용 로그란? 프로그램 개발이나 운영시에 발생하는 문제점 파악 및 모니터링을 위해서 기록을 남기는 것 기록 데이터를 분석하여 통계에 사용할 수 있음 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용 스프링 부트 라이브러리에는 스프링 부트 로깅 라이브러리가 포함됨 로깅 라이브러리 Sl4J : Logback, Log4j, Log4J2 등 많은 로그 라이브러리를 통합해서 인터페이스로 제공해주는 라이브러리 Logback : 실제 로그 라이브러리의 구현체 특징 로그 레벨 ERROR : 요청을 처리하는 중 오류가 발생한 경우 WARN : 처리 가능한 문제이지만, 향후 에러의 원인이 될 수 있는..
스프링 MVC의 구조 이해(2) - 실무에서 사용하는 방식 @RequestMapping, 스프링 MVC 컨트롤러
·
Back-End/Spring MVC
@RequestMapping 어노테이션 기반의 컨트롤러를 지원하는 핸들러 매핑과 어탭터 → 핸들러 매핑 / 핸들러 어댑터를 통해 실제 핸들러가 호출 실무에서는 99.9% 이 방식의 컨트롤러를 사용 RequestMapping의 인터페이스 RequestMappingHandlerMapping : RequestMapping의 핸들러 매핑 RequestMappingHandlerAdapter : RequestMapping의 핸들러 어댑터 동작 방식 HTTP Request를 통해 요청 핸들러 매핑 탐색 : HandlerMapping을 순회하며 해당하는 RequestMappingHandlerMapping 반환 핸들러 어댑터 조회 : HandlerAdapter.supports()를 순서대로 호출하며 처리할 수 있는 핸들..
스프링 MVC의 구조 이해(1) - DispatcherServlet, 핸들러 매핑과 핸들러 어댑터, 뷰 리졸버
·
Back-End/Spring MVC
현재까지 만든 프레임워크와 스프링 MVC의 비교 직접 만든 프레임워크 스프링 MVC 비교 FrontController → DispatcherServlet handlerMappingMap → HandlerMapping MyHandlerAdapter → HandlerAdapter ModelView → ModelAndView viewResolver → ViewResolver MyView → View DispatcherServlet의 구조 DispatcherServlet도 HttpServlet을 상속받아서 사용하는 서블릿 DispatcherServlet → FrameworkServlet → HttpServletBean → HttpServlet 스프링부트는 DispatcherServlet을 서블릿으로 자동 등록하..
자바 백엔드 웹 기술의 진화과정(3) - 웹 프론트 컨트롤러 v4, v5
·
Back-End/Spring MVC
자바 백엔드 웹 기술의 진화과정(3) - 웹 프론트 컨트롤러 v4, v5 프론트 컨트롤러 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 요청에 맞는 컨트롤러를 찾아서 호출 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 단계적으로 도입 v1 : 프론트 컨트롤러 패턴의 도입 v2 : view render를 처리해주는 ****MyView 도입 v3 : 서블릿 종속성 제거 및 뷰의 물리경로를 가지는 뷰 리졸버의 사용 v4 : v3코드에서 컨트롤러가 직접 뷰의 논리 이름을 반환하도록 변경 v5 : 어댑터(Adapter) 패턴의 도입 → 다양한 종류의 컨트롤러 처리 V4 - 컨트롤러의 ViewName반환 기존 V3구조에서 Controller가 ModelView객체가 아닌 ..
자바 백엔드 웹 기술의 진화과정(2) - 웹 프론트 컨트롤러 v1, v2, v3
·
Back-End/Spring MVC
자바 백엔드 웹 기술의 진화과정(2) - 웹 프론트 컨트롤러 v1, v2, v3 서블릿 → JSP → MVC패턴 → 프론트 컨트롤러 패턴 → 스프링MVC 프론트 컨트롤러 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 요청에 맞는 컨트롤러를 찾아서 호출 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 단계적으로 도입 v1 : 프론트 컨트롤러 패턴의 도입 v2 : view render를 처리해주는 MyView 도입 v3 : 서블릿 종속성 제거 및 뷰의 물리경로를 가지는 뷰 리졸버의 사용 v4 : v3코드에서 컨트롤러가 직접 뷰의 논리 이름을 반환 v5 : 어댑터(Adapter) 패턴의 도입 → 다양한 종류의 컨트롤러 처리 FrontController는 스프링 웹 MV..
자바 백엔드 웹 기술의 진화과정(1), 서블릿, jsp, MVC 패턴
·
Back-End/Spring MVC
Java 백엔드 웹 기술의 발전과정에 따라서 순차적으로 적용시켜 볼 예정 서블릿 → JSP → MVC패턴 → 프론트 컨트롤러 패턴 → 스프링MVC 서블릿 방식 회원 등록 폼 @WebServlet(name= "memberFormServlet", urlPatterns = "/servlet/members/new-form") public class MemberFormServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response)..
서블릿의 사용, HttpServletRequest, HttpServletResponse
·
Back-End/Spring MVC
서블릿 사용 & 등록 서블릿 사용 @ServletComponentScan : Springboot환경에서 서블릿을 등록할수 있도록 지원하는 어노테이션 @ServletComponentScan //서블릿을 사용하겠다는 선언 @SpringBootApplication public class ServletApplication { public static void main(String[] args) { SpringApplication.run(ServletApplication.class, args); } } 서블릿 등록 과정 @WebServlet : 서블릿의 이름과 연결 url을 지정시켜주는 어노테이션 HttpServlet 클래스 상속 protected 접근 지정자인 service() 메서드를 Override → 서블..
Jackson 라이브러리 - ObjectMapper, Object를 json으로 파싱하기
·
Back-End/Spring
Object Mapper란? JSON 형태의 Data를 Java객체로 역직렬화(Deserialize) 시켜 주거나, 반대로 Java객체를 JSON으로 직렬화(Serialize)할때 이용하는 Jackson 라이브러리의 클래스 직렬화(Serialize) : Object → String(json) 역직렬화(Deserialize) : String(json) → Object ObjectMapper는 생성비용이 비싸서 bean/static으로 처리하는 것이 좋다. 스프링 부트의 경우에는 기본적으로 Jackson라이브러리가 존재한다. Jackson 라이브러리 프로젝트에 추가하기 Maven인 경우 → pom.xml 의 태그에 추가 com.fasterxml.jackson.core jackson-databind 2.12...
[Spring MVC] - 웹 애플리케이션의 이해(HTTP, WAS, Servlet, 멀티 쓰레드, CSR, SSR)
·
Back-End/Spring MVC
HTTP HTML 문서와 같은 리소스들을 가져올 수 있게 해주는 응용 계층 프로토콜 JSON, XML(API), 이미지, 음성, 영상 파일 등 거의 모든 형태의 데이터 전송 가능 서버같에 데이터를 주고 받을 떄도 HTTP를 사용 웹 서버 및 웹 애플리케이션 서버(WAS) 웹 서버 HTTP기반으로 동작 정적 리소스 제공, 기타 부가 기능 정적 HTML, CSS, JS, 이미지, 영상 등 EX) NGINX, APACHE 웹 애플리케이션 서버(WAS) HTTP기반으로 동작 웹 서버 기능 포함 + (정적 리소스 제공) 프로그램 코드를 실행해서 애플리케이션 로직 수행 → 동적인 HTML, HTTP API(JSON) 서블릿, JSP, 스프링 MVC EX) 톰캣, Jetty, Undertow 등 웹서버와 웹 애플리케..