개발/Spring

개발/Spring

Spring KerberosRestTemplate 사용 예제

Spring framework의 KerberosRestTemplate를 사용해서 HDFS REST API를 통해 파일 다운로드, 업로드하는 예제이다. 일단 KerberosRestTemplate을 사용하기 위한 의존성 설정이 필요하다. org.springframework.security.kerberos spring-security-kerberos-client 1.0.1.RELEASE 예제 코드 import org.apache.commons.lang3.BooleanUtils; import org.apache.http.auth.AuthSchemeProvider; import org.apache.http.auth.AuthScope; import org.apache.http.auth.Credentials; imp..

개발/Spring

Spring Controller에서 파라미터 검증 방법들

Validator Validator 인터페이스를 구현한 객체를 사용하는 방법. 컨트롤러 메소드 내의 코드 Validator를 컨트롤러에서 DI받아 두고 각 메소드에서 필요에 따라 직접 validate() 메소드를 호출하는 방법. @Valid를 이용한 자동검증 JSR-303 Valid 애노테이션을 사용하는 방법. @Valid 애노테이션을 차용했을 뿐 내부적으로는 스프링의 Validator가 사용된다. 컨트롤러 메소드 파라미터에 @Valid를 추가한다. WebDataBinder는 @InitBinder 메소드에서 등록된 Validator를 이용해 모델을 검증한다. 서비스 계층 오브젝트에서의 검증 Validator를 서비스 계층에서 DI받아 사용하는 방법. 서비스 계층을 활용하는 Validator 검증 관련된 ..

개발/Spring

스프링 @Async를 통한 비동기 처리 및 설정값

@Async를 통해서 비동기 처리하는 방법 관련 내용 및 설정값들에 대해서 간단하게 정리한 내용이다. # @Async를 통한 비동기 처리 @Async 애노테이션을 통해서 메소드 호출을 비동기로 처리할 수 있는데 적용 방법은 비동기로 수행할 메소드(혹은 타입)에 @Async를 붙여주면 된다. 모든 메소드에 사용할 수 있는 것은 아니고 public void 혹은 public Future 타입의 메소드에만 적용할 수 있고 같은 클래스 내의 메소드 호출은 적용이 안된다. (다이나믹 프록시 적용이 가능해야 하기 때문임) (task:executor 설정 시 mode를 aspectj로 지정하면 이 제약이 없을 수도 있을 것 같다.) 작업의 결과값을 알아야하는 경우에는 Future 타입을 리턴 받아야 할 듯하다. 비동..

개발/Spring

MyBatis cannot change the ExecutorType when there is an existing transaction 오류

스프링 배치 잡을 실행할 때 MyBatis 쿼리 실행 부분에서 다음과 같은 오류가 발생하는 경우가 있었다. cannot change the ExecutorType when there is an existing transaction이 에러는 존재하는 트랜잭션이 있을 경우 MyBatis의 ExecutorType (SIMPLE, BATCH, REUSE) 을 변경할 수 없다는 의미이다. 원인 스프링 배치 잡에서만 날 수 있는 오류는 아니고 MyBatis를 사용하고 트랜잭션 설정된 부분이 있다면 발생할 수 있을 것이다. 트랜잭션으로 묶여있는 범위 내에서는 배치 잡 내에서 동일 데이터 소스에 대해서는 동일 SqlSessionTemplate을 사용하게 될 것인데, ExecutorType은 SqlSessionTempl..

개발/Spring

Spring Batch skip 로직 동작 방식

Spring Batch에는 skip-limit라는 설정을 할 수 있습니다. chunk 단위 처리할 때 skip-limit에 설정된 횟수만큼은 예외가 발생해도 예외를 skip하고 계속해서 잡이 수행됩니다. 이 정도만 알고 있었는데 skip-limit를 실제 적용해보면서 새롭게 알게된 것들이 있어 정리해봅니다. 아래와 같이 chunk 설정을 해서 1개 단위로 처리를 하고 발생하는 예외에 대해서 7번까지 skip하고 진행하고자 했습니다. 설정이 잘 동작하는지 테스트를 해보니 processor에서 예외가 발생한 경우 예외가 발생한 item은 skip되고 다음 item 처리로 넘어갔습니다. 하지만 writer에서 예외가 발생한 경우는 skip되지 않고 같은 item이 다시 processor부터 다시 처리되었습니다..

개발/Spring

Spring Batch commit-interval에 대한 정리

Spring Batch Job 설정 시 commit-interval 이라는 값을 지정할 수 있다. 이 값이 의미하는 바는 commit되는 단위 갯수인데 정확히 어떤 의미인지 정리해본다. 스프링 배치 문서에는 다음과 같이 되어있다. The number of items that will be processed before commit is called for the transaction. Either set this or the chunk-completion-policy but not both. Can be specified as an expression that will be evaluated in the scope of the step (e.g. "#{jobParameters['commit.interva..

bebeside77
'개발/Spring' 카테고리의 글 목록