스프링 MVC는 Model2 방식을 따르며 이 Model2의 아키텍처에 맞게 설계되어 있다. 스프링에서는 유저의 요청을 받는 DispathcerServlet이 핵심이다.
DI(Dependency Injection)란 스프링이 다른 프레임워크와 차별화되어 제공하는 의존 관계 주입 기능으로,객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식이다.DI(의존성 주입)를 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아진다.
AOP는 스프링의 가장 중요한 세 가지 특징인 IoC(제어의 역전), DI(의존성 삽입), AOP(관점 지향 프로그래밍)중 하나이다.AOP는 OOP를 대신하는 새로운 개념이 아니라, 기존 OOP를 더욱 보완, 확장하여 OOP를 OOP답게 사용할 수 있도록 도와주는 개념
Spring에서는 Spring Container, IoC Container라는 개념을 사용한다. Container는 인스턴스의 생명주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 제공하도록 하는 것이다.즉 Container는 개발자가 작성한 코드의 처리과정을 위
앞서 DI(Dependency Injection)에 대해서 알아보았는데, Spring에서 의존성을 주입하는 세 가지 방법에 대해서 다루어 보려고한다.DI는 Spring에서만 사용되는 용어가 아니라 객체지향 프로그래밍에서는 어디에서나 통용되는 개념이다.객체 내부에서 다른
Command Object란 HttpServletRequest를 통해 들어온 RequestParameter들을 setter method를 이용하여 Object에 정의되어있는 속성에 Binding이 되는 Object를 의미한다.
Spring에서 Controller에 원하는 Parameter나 Data를 Binding 시키는 방법은 여러 종류가 있다. 평소 개발할때 사용하던 코드에서 아무 생각없이 Binding을 하다보니 아래 해당 Binding 방법들에 대한 이해도가 부족하여 @Request
Swagger Swagger란 서버로 요청되는 URL 리스트를 HTML화면으로 문서화 및 테스트 할 수 있는 라이브러리이다. 간단하게 설명하면 Swagger는 API Spec 문서이다. API를 엑셀이나 가이드 문서를 통해 관리하는 방법은 주기적인 업데이트가 필요하
Annotations Swagger 설정을 먼저 하고싶다면 여기글을 먼저 읽고 오면 된다. Swagger에서 API 설명을 위한 Annotation 들을 아래에 정리한다. @ApiOperation = Method 설명 @ApiOperation으로 해당 Control
Spring Spring은 Java 진영에서 가장 대중적인 동적 웹 개발 프레임워크이다. Spring은 아래 세 가지 의존성 주입(DI, Dependency Injection), 제어의 역전(IOC, Inversion Of Control), 관점 지향 프로그래밍(AO
복수 이상의 WAS를 사용하는 상황에서 같은 Spring Application을 사용하지만 각 Sever에 맞게 의 Context를 설정해야 하는 경우가 있다. 예를 들자면 아래와 같은 상황이다.
SPRING RESPONSE OBJECT 값 중에서 NULL 인 값은 안보내는 방법\[YENA WORLD]JSON으로 ResponseBody를 통해 JSON으로 응답을 보낼때,기본적으로 NULL 값인 요소들도 함께 전송된다.NULL이 아닌 요소들만 Response로 전
Interceptor Interceptor는 낚아채다의 의미를 가지고있다. Client에서 Server로 들어온 Request 객체를, Controller의 Handler로 도달하기 전 가로채어, 원하는 추가 작업이나 로직을 수행 한 후 Handler로 보낼 수
404 Error을 Handling하기 위해 NoHandlerFoundException을 @ExceptionHandler로 Handling 해보려 했지만 적용되지 않았다. 이를 해결하기 위해선 DispatcherServlet이 HandlerMapping에게 Requ
이때 해당 서버에서 API 문서 관리용으로 Swagger를 사용 중이었는데, 해당 검증 과정이 Swagger 페이지를 요청할때도 수행되고 있었다. 이를 위해 아래처럼 Interceptor에서 HttpServletRequest의 url를 검증하여 Interceptor
Custom HandlerMethodArgumentResolver 만들어보기\[Advenoh - FRANK OH]HandlerMethodArgumentResolver는 Interface로써,Controller의 Argument(Parameter)에 지정된 변수들을,An
Spring에서 구현된 HandlerMethodArgumentResolver 지금까지 많이 사용했던 @PathVariable, @RequestParam, @RequestHeader Annotation 들도, HandlerMethodArgumentResolver를 S
\[Spring Boot] CORS 설정하기FrontEnd와 BackEnd를 구분지어 개발하거나,서로 다른 Server 환경(Port, Domain ...)에서 자원을 공유해야 할 때,위 처럼 CORS 설정이 안되있을 경우 오류가 발생한다.이번엔 Spring Boot에
Spring Boot에서 기본적으로 제공하거나, 각 Dependency에서 제공하는 Property 외에도, 개발자가 직접 Customize한 Property 역시 설정 가능하다. 서버에서 사용하는 Public Key값을 관리한다거나, 서버 마다 사용하는 로직 변
java.util.concurrent.ExecutorService을 활용해서 비동기 방식의 method를 정의 할 때마다, 위와 같이 Runnable의 run()을 재구현해야 하는 등 동일한 작업들의 반복이 잦았다. With @Async @Async Annotati
현재 개발하고 있는 프로젝트단에서 JWT를 활용한 인증이 필요한 Handler를 공통적으로 인증 과정을 수행하는 HandlerInterceptorAdapter를 상속받는 JwtInterceptor를 위와 같이 사용하고 있었다. 위 인증 과정 중 인증 실패시 아래 처
Java Spring Framework를 사용하여 Web Application을 구동 중이라면, Spring Batch를 통해 Batch Application을 생성하여 사용할 수 있다. 오늘은 간단한 Spring Batch 구성 요소와 사용 방법에 대해 알아보려한