Spring Boot Graceful Shutdown

Kubernetes 기반의 구조에서 Spring Boot를 주로 사용하다 보니 서비스 무중단 배포가 중요한 이슈로 부상했습니다. 이를 대응하다 보니 Open Source Library를 만들어서 ( 다른 Library를 거의 베껴서 ) 공개하게 되었습니다. https://github.com/SilverNine/spring-boot-graceful-shutdown PS. 마음껏 수정하기 위해 기존의 다른 Library를 쓰지 않고 새로 만들게 되었습니다.

Spring Boot – Lucy XSS Filter

가장 기초적인 공격방법 중 하나인 XSS를 방어할 수 있는 방법 중 Lucy XSS Filter를 Spring Boot에 적용하는 법을 소개합니다. XSS에 관한 정보는 아래 링크를 참조하시기 바랍니다. https://namu.wiki/w/XSS   – Maven을 사용한다면 pom.xml에 아래 내용추가

  – Configuration 추가

  – Resources 폴더 하위에 lucy-xss-servlet-filter-rule.xml 추가

 

ElasticBeanstalk Spring Boot Custom nginx.conf 적용

ElasticBeanstalk에 Spring Boot 프로젝트로 Tomcat을 사용하고 있을때 Custom nginx.conf 적용 방법입니다. Maven을 사용하고 있다면 pom.xml에 아래와 같이 정의합니다.

  /src/main/resources/.ebextensions/nginx/nginx.conf 생성 ( 대용량 파일의 업로드를 위한 설정이 포함되어 있습니다. 값을 서비스에 맞게 수정하세요 )

  자 이제 빌드를 하고 eb deploy를 통해 배포를 진행하면 custom nginx 설정이 적용됩니다. 더보기…

Spring Batch – @Transactional 이슈 해결 방법

Spring Batch Admin 을 통합한 Spring Batch 프로젝트에서 아래와 같은 경우 @Transactional 어노테이션이 정상적으로 작동하지 않는 경우가 있습니다.     1. 기존 Spring Batch Admin 라이브러리 내부에 transactionManager가 선언되어 있기 때문에 다른 이름으로 TransactionManager를 선언하여 사용

2. 위와 같이 선언하고 아래와 같이 어노테이션을 사용하여 트랜젝션을 설정

  이와 같은 더보기…

JsonView Null to Empty String

Spring에서 JsonView 사용 시 공통으로 null인 필드를 empty string으로 리턴해야 할 필요가 있는 경우가 있습니다. 이런 경우 ObjectMapper를 상속받은 Custom ObjectMapper를 이용한 HttpMessageConverter를 통해 해결할 수 있습니다. 1.NullSerializer 구현

2.CustomObjectMapper 구현

3.HttpMessageConverter 추가

 

Cafe24 – Please set the ‘defaultServletName’ property explicitly.

Cafe24 JSP 호스팅 ( SpringFramework + Spring Data JPA + QueryDSL ) 사용중입니다. www.war 파일로 업로드를 하고 서버 스타트를 했을 시 아래와 같은 에러가 발생하는 경우가 있습니다. ERROR ContextLoader – Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘defaultServletHandlerMapping’ defined in class path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class]: Instantiation of bean failed; 더보기…

Spring TransactionAdvice propagation

스프링이 지원하는 트랜잭션 전파 속성은 여섯가지가 존재한다 속성은 아래와 같이 tx:method 에서 설정할 수 있으며, @Transactional 에서 propagation 엘리먼트로 지정도 가능하다

설정 가능한 속성 ★REQUIRED 하나의 트랜잭션이 시작된 후 다른 트랜잭션 경계가 설정된 메소드 호출 시 같은 트랜잭션으로 묶인다 이미 시작된 트랜잭션이 없을 시 새로운 트랜잭션이 시작된다 SUPPORTS 이미 더보기…

Spring 엑셀 다운로드 구현

Spring 3.0 에서 – POI Library – Enum Model – AbstractExcelView 를 사용하여 간단한 엑셀다운로드 기능을 만들어보았는데 고칠 부분이 많이 보이긴 합니다..