기록해야 기억한다
-
Jackson - 다형성 유형의 serialize, deserialize 사용하기기록해야 기억한다/Spring 2021. 10. 26. 14:06
spring 에서 기본적으로 json 을 직렬화, 역직렬화하는데 사용하는 jackson 을 사용할때 interface 나 abstract class 를 상속받는 클래스들의 역직렬화하는 방법을 정리합니다. // 역직렬화 대상인 인터페이스 @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT, property = "type") @JsonSubTypes(value = { @JsonSubTypes.Type(value = BlockA.class, name = "a"), @JsonSubTypes.Type(value = BlockB.class, name = "b") }) public interface IBlock { } ..
-
Jenkins 설치(docker image)기록해야 기억한다/OSS(Open Source Software) 2021. 7. 28. 16:58
Jenkins 에서 잘 사용하지 않는 기능을 테스트를 할 일이 생겼다. 실제 팀환경에서 테스트할건 아니라서 docker 를 이용하기로 했다. docker hub 의 공식 jenkins 이미지를 검색하면 https://hub.docker.com/_/jenkins 로 확인이 되고 해당 사이트를 접속하면 DEPRECATION NOTICE 가 우릴 반긴다...(제길..) 대략 내용은 '더이상 지원없으니 사용하지 마세요.' 이다. 더보기 docker image 가 필요하신 분이면 그냥 docker pull jenkins/jenkins 을 통해 image pull 하면 됩니다. 아래쪽의 링크된 프로젝트 사이트를 통해 확인해보면 공식 repo 라고 따로 안내가 되어있으니 해당 repo 로 접근해야한다.(뭐가 다르겠어..
-
@DataJpaTest 할 때의 주의 사항기록해야 기억한다/Spring 2021. 2. 2. 23:30
저는 테스트할때 보통 test/resources 에 application-test.yml 을 따로 설정해두고 테스트를 진행합니다. 그런데 아래와 같은 상황이 생겨서 한참 고민했는데 역시나 사람이 문제였습니다. @DataJpaTest 인데 Unable to start ServletWebServerApplicationContext....가 뜬다! 분명히 JPA 테스트를 위해 @DataJpaTest 를 수행하는데 자꾸 servlet 관련 에러가 발생했고.... 왜 그러지? 뭔가 잘못됐나? 라고 하면서 test 리소스를 계속 찾았지만 이유를 찾지 못하여 급기야..아래처럼 처리하고 테스트를 진행했습니다. @DataJpaTest(properties = "spring.main.web-application-type=n..
-
Spring REST 에서의 Global Exception기록해야 기억한다/Spring 2021. 1. 11. 12:26
spring-mvc 에서의 global exception 에 대해 메모해놓으려합니다. 언제나 그랬듯이 spring ref. 문서를 찾는게 가장 좋으니 간략하게 정리하는 수준이 될 것입니다. Spring 3.2 이전에는 Spring MVC application 에서 예외를 처리하는 두 가지 주요 접근 방식이 있었습니다. 하나는 HandlerExceptionResolver, 또 하나는 @ExceptionHandler annotation 이였습니다. 둘다 분명한 단점이 있습니다. spring-boot 에서는 WebMvcRegistrations Bean 을 선언하고 이를 재정의하여 custom instance 로 제공하는 방법으로 사용할 수 있습니다. 이에 3.2부터 이전 두 솔루션의 한계를 해결하고 전체 애플..
-
logback 에서의 rolling 정책 사용시 주의사항기록해야 기억한다/OSS(Open Source Software) 2021. 1. 7. 15:02
logback 사용시 일반적으로 특정 시간이나 용량에 따라 파일을 이동하고 압축하는 정책을 적용해서 사용한다. 이 경우 몇 가지 case 를 통해 유의해서 사용해야 할 사항에 대한 기록이다. Appender 사용 Appender 는 위임받은 이벤트에 대해 log 가 발생하면 출력스트림(console/file) 에 write 하는 역할을 한다. package ch.qos.logback.core; import ch.qos.logback.core.spi.ContextAware; import ch.qos.logback.core.spi.FilterAttachable; import ch.qos.logback.core.spi.LifeCycle; public interface Appender extends LifeCy..
-
Spring Cloud OpenFeign, 그리고 SSL기록해야 기억한다/Spring 2020. 12. 29. 00:05
OpenFeign (github.com/OpenFeign/feign) Feign 은 선언적 Web Service Client 인 오픈소스이다. 이를 이용해 우리가 Spring 에서 Service 를 DI 를 통해 호출하여 사용하는 것처럼 웹서비스 Client 를 사용할 수 있게 도와준다. Feign 은 Interface 를 만들고 annotation 을 추가하는것으로 쉽게 사용할 수 있고, encoder, decoder 를 플러그형으로 지원한다. Spring Cloud OpenFeign Spring Cloud는 Spring MVC annotation 및 Spring Web에서 기본적으로 사용되는 동일한 HttpMessageConverters를 사용하기위한 지원을 추가하고 Eureka, Spring Clo..
-
스케줄러에 property 주입하기기록해야 기억한다/Spring 2020. 12. 17. 15:31
1. scheduling + property spring 에서 간단하게 주기적인 작업을 처리하기 위해 scheduling 패키지를 이용하게 되는데, 이 때 변수값에 따라 주기정보를 변경적용하기 위한 방법이다. 아래는 spring 의 여느 value 주입처럼 "${}" 을 이용하여 주입을 하고 @Scheduled(cron = "${my.custom.cron}") public void sampleJob() { logger.info("========= 진행합니다. ========="); } 아래는 월요일~금요일까지 매시간 0 분 0초에 돌아가도록 설정한 application 속성 파일의 내용이다. (yml 의 경우 따옴표를 붙여야하는데 문자열에 띄어쓰기가 있을 경우 안되는 경우가 있었던 것같다...기억이.....
-
Cassandra 의 간략한 특징과 timestamp 에 대해기록해야 기억한다/OSS(Open Source Software) 2020. 12. 16. 15:15
1. 안녕 Cassandra ? 최근 업무를 진행하며 Cassandra 를 사용할 기회가 있었습니다. 나름 유명한 상태이지만 사용해본적이 없어서 여느 RDB 를 사용하듯이 사용하였는데 몇가지 문제가 있었습니다. 그중 하나가 바로 timestamp 값에 대한 핸들링이였고, 그에 대한 내용과 사용상 특징 몇가지를 정리하려 합니다. 2. Cassandra 의 사용상 특징 카산드라는 scalability와 high availability에 최적화된 대표적인 분산형 Data storage 라고 합니다. 자세한 내용은 알지도 못하고 그에 대해 다룰 글이 아니기에, 단순하게 사용상 특징 몇가지만 언급합니다. RDB 와 같은 조건 쿼리 사용상 제약 : 분산되어 있는 Key 가 있을 경우 반드시 Key 순서에 맞추어 w..