🐢 Study/Spring

    java 코드를 이용한 Spring-MVC 환경 설정

    순수 자바 클래스와 어노테이션을 이용한 시동 0. 개요 Servlet 3.0 이상 버전부터는 web.xml 없이 서블릿 컨텍스트를 초기화할 수 있는 방법이 나왔습니다. 따라서 servlet, filter, listener 컴포넌트의 등록과 설정을 코드로 입력하여 사용 가능하고 web.xml 파일과 같이 사용할 수 도 있습니다. 그래서 ServletContext에 관련 메소드들이 추가되었습니다. 이 메소드들을 사용하기 위해서 ServletContainerInitializer의 onStartup 메소드를 적절하게 호출하면 됩니다. 코드로 설정하는 것의 장점은 최종 사용자나 어플리케이션이 DD(deployment descriptor, 일명 web.xml)를 배포하지 않고도 프레임워크의 web component..

    JPA, h2 / Table not found / spring.jpa.defer-datasource-initialization: true

    Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Invocation of init method failed;nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: ~~ # 오류 내용 data.sql 에 임시 데이터를 넣어 놓고 서버를 실행시켰는데 처음보는 에러를 만났다. table을 찾을 수 없다는 에..

    @Bean VS @Component

    @Bean vs @Component @Bean 과 @Component 사용하는 이유? IoC Container는 @Configuration, @Bean, @Component, @Repository, @Service, @Controller가 달린 클래스를 감지하며 빈을 가져오기 위해 빈 스캐닝을 합니다. 대표적으로 빈으로 사용 할 수 있도록 해주는 어노테이션으로 @Bean과 @Component이 있다. (@Configuration은 구성클래스를 만들 때 사용, @Repository, @Service, @Controller는 @Component에 속해있다.) 👉 @Bean @Bean은 개발자가 직접 제어가 불가능한 외부 라이브러리를 사용할 때 사용한다. @Configuration을 선언한 클래스 내부에서 사..

    Springboot exception (@ControllerAdvise, @ExceptionHandler)

    Springboot Exception 처리 @ControllerAdvise @ControllerAdvice는 모든 @Controller 즉, 전역에서 발생할 수 있는 예외를 잡아 처리해주는 annotation이다. @RestControllerAdvice public class GlobalControllerAdvice { @ExceptionHandler(value = Exception.class) public ResponseEntity exception(Exception e) { System.out.println(e.getClass().getName()); System.out.println(e.getLocalizedMessage()); return ResponseEntity.status(HttpStatus..

    Filter vs Interceptor vs AOP

    👋 들어가기 전 Filter Interceptor AOP 세가지 기능이 모두 비슷한 기능을 하는데, 이들이 필요한 이유는 프로그램을 만들거나 작업을 할 때 공통되는 부분이 굉장히 많다. 예를 들어, 인증 처리라던지, XSS로부터 보안 처리, 로깅 처리, 페이지 인코딩도 포함될 것이다. 이렇게 프로그램 내에서 자주 사용되는 기능을 소스 여러 군데에 사용되고 있으면 소스 양도 늘어날 것이고, 프로젝트 단위가 커질수록 서버에 대한 부하, 유지보수에 어려움을 겪을 수 있다! 쉽게 말해서 공통되는 부분은 빼서 관리하는게 좋다. 위와 같이 공통되는 기능을 처리해주는 기능을 Spring이 제공한다. 위 세가지 기능에 대해 알아보고, 차이점들을 알아보자! Filter, Interceptor, AOP의 흐름 서버를 실행..

    HTTP Protocol

    HTTP Protocol HTTP (Hyper Text Transfer Protocol)로 RFC 2616에서 규정된 Web에서 데이터를 주고 받는 프로토콜. TCP를 기반으로 한 REST의 특징을 모두 구현하고 있는 Web기반의 프로토콜 HTTP 통신 방법 HTTP는 메시지를 주고(Request) 받는 (Response) 형태의 통신방법. HTTP Method GET 리소스의 조회에 사용한다. 서버에 전달하고 싶은 데이터를 query(parameter, query string)을 통해 전달한다. 메시지 바디를 통해 데이터를 전달할 수도 있지만 지원하지 않는 곳도 존재하기 때문에 권장❌ POST 메시지 바디를 통해 서버로 요청 데이터를 전달한다. 서버는 메시지 바디를 통해 들어온 데이터를 처리하는 모든 ..