728x90

전체 글 287

ConfigurationProperties 주의사항

Spring 에서 제공하는 @ConfigurationProperties 를 사용하면 application.yml 에 구성된 정보를 특정 클래스로 바인딩 할 수 있다. 이 때 몇가지 주의사항이 있다. 1. 바인딩할 클래스에 @ConfigurationProperties 주석을 추가하는 것은 당연한데 그 외 @Configuration 클래스나 @SpringBootApplication 클래스에 @EnableConfigurationProperties 도 추가해야 하고 파라미터로 @ConfigurationProperties 주석을 추가한 클래스를 포함해야 한다. 2. @ConfigurationProperties 에 prefix 를 지정할 때 카맬케이스는 사용할 수 없다. 만약 application.yml 에 gif..

Backend/Spring+Boot 2023.08.30

swagger 사용시 패키지가 다른 동일 클래스를 구별하지 못하는 이슈

여러명의 개발자가 페어로 개발을 하다보면 클래스명은 동일하지만 패키지를 다르게 해서 생성하게 되는 경우가 있다. 중복 클래스가 아니라 엄연히 다른 클래스인데 명칭이 중복되는 경우도 있고 inner class 명이 서로 다른 클래스 하위에 중복으로 선언될 수도 있다. swagger 에서는 Controller 에서 사용되는 클래스들을 Schema 로 분류해서 관리하는데 기본적으로 패키지를 포함해서 관리하지 않기 때문에 클래스명이 동일할 경우 이를 구분하지 못한다. 예를 들어 아래와 같이 2개의 VO 클래스와 Controller 메소드가 정의되어 있다고 가정해보자. data class Vo1( val transferablePeriod: TransferablePeriod ) { data class Transfe..

Backend/Spring+Boot 2023.08.30

spring cloud vault 으로 vault 연동

사내에 vault 서버가 있고 이곳에 주요정보들을 보관하고 있다. Spring 환경어어서 기존 프로젝트 들에서는 아래 의존성을 사용했었다. org.springframework.vault:spring-vault-core 사용법은 매우 간단하다. application.yml 파일에 아래와 같이 접속정보를 정의하고 vault: uri: https://vault.... token: ... Configuration 클래스는 아래와 같이 정의하면 된다. @Configuration @Import(EnvironmentVaultConfiguration.class) @VaultPropertySource(value = {"secret/application/sandbox/db-info"}, propertyNamePrefix ..

Backend/Spring+Boot 2023.06.14

jquery Deferred

정리하면 어떠한 비동기 함수의 후처리에서 이전 함수의 데이터가 필요한 상황이라면 인자로 해당 데이터 또는 미리정의된 함수를 받을 수 밖에 없다. 그런데 후처리는 호출한 쪽의 책임이기 때문에 미리정의된 함수를 전달하는 것이 적절하고 이렇게 인자로 전달받는 후처리함수를 콜백함수라 한다. 그런데 콜백함수로 후처리를 정의하다보면 여러 비동기함수를 연결해서 사용할 경우 행의 길이가 길어지는 것은 불가피하다. 예를 들어 jquery ajax 를 비동기로 호출하는 함수가 5개가 있고 이를 연결해서 사용해야 하는 상황을 가정해보면 될 것 같다. 이를 개선하기 위해 promise 의 jquery 버전인 Deferred 가 사용된다. 후처리를 호출한 쪽에 정의하는 구조로 콜백함수가 필요없다. 호출한 쪽에서 후처리를 하기 ..

Frontend/JavaScript 2023.05.18

둘째 200일 촬영

100일 사진 촬영을 진행했던 르아인 스튜디오에서 둘째의 200일 사진도 진행했다. 첫째 때의 100일과 200일 등등의 사진도 이곳에서 진행했는데 이제는 첫째와 둘째가 함께 한다. 나와 와이프를 닯아서인지 첫째가 수줍임이 많아 사진촬영시에도 긴장을 많아 하는 편이다. 둘째도 낯가림이 심하고 아마도 첫째처럼 수줍음이 많아지겠지... 그래서 되도록 사진촬영은 한 곳에서 계속 진행할 예정이다. 익숙해지면 많아 나아지겠지... 실제로 첫째도 이제 이곳이 조금은 익숙한 모양이다. 둘째를 웃게하느라 애 좀 썼지만 서비스와 촬영은 이번에도 만족한다.

내돈내산 리뷰 2023.05.18

뒤늦게 써보는 나의 키보드 연대기

일단 내가 사용해본 제품들을 나열해보면 아래와 같다.(로지텍을 제외하고 모두 텐키리스 제품이다) 레오폴드 갈축 필코 갈축 덱프랑슘 갈축 바밀로 저소음 적축 바밀로 로즈축 리얼포스 R2 45g 저소음 균등 리얼포스 R2 35g 저소음 균등 리얼포스 R3 45g 저소음 균등 로지텍 MX KEYS 엠스톤 풀윤활 저소음 적축 35g 엠스톤 풀윤활 저소음 밀키축 38g 엠스톤 풀윤활 저소음 코랄축 38g 엠스톤 풀윤활 밀키축 V2 38g 대부분 방출하고 현재 소유하고 있는 키보드는 다음과 같다. 엠스톤 풀윤활 저소음 적축 35g 엠스톤 풀윤활 저소음 코랄축 38g 엠스톤 풀윤활 밀키축 V2 38g 처음에는 갈축으로 시작했다. 하지만 역시 소음이 문제였고 사무실에서 사용하기에는 무리가 있어 모두 방출하고 덱만 집 ..

내돈내산 리뷰 2023.02.19

테스트 코드로 이해해보는 코루틴 예외처리

@Test fun `코루틴은 논블로킹으로 실행된다`(){ /* 코루틴 내부의 코루틴은 각각 논블로킹으로 처리된다. 단, 스레풀에서 돌렸을 때 이야기.. 메인스레드 하나에서 돌리면 작업자가 한명이니 당연히 순차처리된다. */ runBlocking(Dispatchers.IO) { launch { repeat(1000){ println("1111111") } } launch { repeat(1000){ println("2222222") } } } } @Test fun `코루틴은 기본적으로 예외가 부모로 전파된다`(){ /* 예외가 부모로 전파되면 부모가 취소되고 결국 다른 형제 코루틴도 취소된다. launch, async 동일 */ runBlocking(Dispatchers.IO) { launch{ repea..

Backend/Kotlin 2023.02.11
728x90