Spring Batch를 실행할 때 ORA-08177: can't serialize access for this transaction (이 트랜잭션에 대한 직렬화 액세스를 할 수 없습니다) 오류가 발생하였다. 여러개의 Spring Batch Job이 하나의 JobRepository를 가지고 동시에 실행이 될 때 발생할 수 있는 문제이다. 이는 JobRepository 설정 중 transactionManager의 IsolationLevelForCreate 속성은 따로 지정하지 않을 경우 디폴트 값인 ISOLATION_SERIALIZABLE으로 설정되기 때문이다. 이를 ISOLATION_DEFAULT으로 변경하면 문제는 해결된다. 변경을 하는 방법은 다음과 같다. Java Config @Bean public..
OWASP는 Open Web Application Security Project의 약자이고 웹 어플리케이션 보안을 위해 힘쓰는 비영리 조직이 진행하는 프로젝트이다. 매년 보안상 이슈가 될 항목들에 대해 10가지를 선정하여 발표한다. 그게 OWASP top 10이다. 매년 top 10에 속해있는 항목이 바뀌지만 굵직한 놈들(Injection, XSS, CSRF..) 은 항상 껴있다. 2021년에는 어떤 항목들이 Top 10에 선정이 되었는지 살펴보자. (잘 나온 원문을 번역기 돌렸으니 이해를..) THE OWASP TOP 10 LIST 1. INJECTION ATTACKS (인젝션) 주입 공격은 공격자가 악성 코드를 응용 프로그램에 입력함으로써 데이터 또는 전체 응용 프로그램을 손상시키는 명령을 강제로 실..
Spring (Springboot) 에서는 선언적 Transaction 관리를 한다. 이는 비즈니스 로직에 트랜잭션 로직을 심는것이 아닌 설정이나 어노테이션으로 간편하게 트랜잭션을 정의하는것을 말한다. 이렇게 트랜잭션 정의를 할때 timeout은 어떻게 설정하는지 알아보자. Transaction에서의 timeout은 지정한 시간 내에 해당 메소드 수행이 완료되지 않은 경우 rollback 수행하는것을 말한다. 참고로 Spring의 default timeout은 -1 이다. (timeout 무제한) 전역 timeout 설정 (application.yml or application.properties) spring: transaction: default-timeout: 10 이렇게 spring.transac..
앞서 다음과 같이 EhCache를 사용하는 방법과 설정하는 방법에 대해 살펴보았다. Springboot + Ehcache 초간단 설정 및 사용방법 cache는 거의 변경될 여지가 없는 DB 조회 결과값을 메모리 혹은 디스크에 보관하고 있다가 다시 호출되었을때는 DB 조회를 하지 않고 메모리에 있는 결과값을 그대로 쓰고 싶을때 사용한다. 많은 oingdaddy.tistory.com EhCache xml config를 java config로 변환하기 spring의 version이 올라가면서 모든 설정은 java config로 하기를 권장하고 있다. 이에 따라서 관련된 글도 포스팅도 여러개 했었다. Spring 설정 Xml Config에서 Java Config로 바꾸는 방법 (요령) spring 프로.. oi..
spring의 version이 올라가면서 모든 설정은 java config로 하기를 권장하고 있다. 이에 따라서 관련된 글도 포스팅도 여러개 했었다. Spring 설정 Xml Config에서 Java Config로 바꾸는 방법 (요령) spring 프로젝트에서 springboot 프로젝트로 migration 하기 (6) - XML config to JAVA config spring 프로젝트에서 springboot 프로젝트로 migration 하기 (1) - pom.xml spring 프로젝트에서 springboot 프로젝.. oingdaddy.tistory.com spring 프로젝트에서 springboot 프로젝트로 migration 하기 (6) - XML config to JAVA config spr..
cache는 거의 변경될 여지가 없는 DB 조회 결과값을 메모리 혹은 디스크에 보관하고 있다가 다시 호출되었을때는 DB 조회를 하지 않고 메모리에 있는 결과값을 그대로 쓰고 싶을때 사용한다. 많은 cache 관련 lib들이 있지만 가장 대표적으로 많이 사용되고 있는 ehcache를 springboot와 연동하고 사용하는 방법에 대해서 기술해보고자 한다. 필자는 springboot 2.3.x, java11, maven, ehcache 2.x 환경이다. 설정 pom.xml org.springframework.boot spring-boot-starter-cache net.sf.ehcache ehcache 2.10.6 가장 먼저 해야 할 일은 dependency를 추가하는 일이다. springboot에서 간편히..
masking은 민감 정보에 대해 보이지 않게 처리를 해주는것을 말한다. 개인정보와 관련된 시스템을 구축하다보면 masking은 필수로 사용이 되어야 한다. 화면단에 보이는 masking도 필요하고 출력되는 log에도 masking은 필요하다. 그중 이번에는 log에 masking을 적용하는 방법에 대해 알아보도록 하겠다. 필자는 springboot 환경에 logback을 사용하고 있다. springboot의 application.yml 에서 logback 설정을 하여 log를 관리하고 있었다. 하지만 log를 masking 하는것은 application.yml에서는 할수 없었다. application.yml에서는 default로만 설정을 할 수밖에 없어서 커스터마이징이 필요한 log masking은 사..
개발을 할 때 한번쯤은 필요한 사이트들(지극히 주관적인..)을 즐겨찾기에 넣어놓고 사용하다가 블로그에 기술을 해본다. 두서없이 막 쓸 계획이다. 아이콘 Font Awesome The world’s most popular and easiest to use icon set just got an upgrade. More icons. More styles. More Options. fontawesome.com 프론트엔드 영역이지만 혼자 개발할때는 종종 들어가서 괜찮은걸 가지고 온다. 물론 무료를 사용한다. RGB 색상표 (16진수 컬러 코드표) RGB색상표/16진수 컬러 코드표 - Hi!Penpal! HTML컬러표 www.hipenpal.com 이것도 마찬가지로 백엔드 개발자인 나에게 많이 쓰일 일은 없지만 그..