return (code, data) 함께 반환하기
때때로 method 내에서 정상 로직 진행에 실패한 경우에도 data를 상위 메서드에 전달해야 하는 경우가 있다. (e.g., 추가인증필요, 기처리) 기본적으로 throw Exception을 return 처럼 data 반환 용도로 사용하는 것은 불가능 하기 때문에, return 기반으로 접근해야 한다. 직접 return 타입 정의해 사용하기 dat...
때때로 method 내에서 정상 로직 진행에 실패한 경우에도 data를 상위 메서드에 전달해야 하는 경우가 있다. (e.g., 추가인증필요, 기처리) 기본적으로 throw Exception을 return 처럼 data 반환 용도로 사용하는 것은 불가능 하기 때문에, return 기반으로 접근해야 한다. 직접 return 타입 정의해 사용하기 dat...
중요한 처리로직 인 경우, 어차피 caller는 callee를 믿어서는 안된다. 여기서 callee는 다른 class 혹은 다른 class의 메서드를 의미한다. 같은 class 내 private method를 호출하는 경우라면, 자기 자신이 직접 정의한 기능이므로 믿을 수 있으나, class 바깥의 다른 class와 메시지를 주고 받는 상황...
[!warning] return 대신 throw Exception 하면서 유용한 객체를 함께 반환하는 것은 불가능하다. (가능은 하지만 타입 정보가 사라져서 정적 타입 언어를 제대로 사용하는 방법이 아니다.) return Type 개수 만큼 Exception class를 정의 할 수는 없으니, generic을 이용해 CommonExcepti...
Spring 6.1.0 부터, 반환타입 Mono에도 @Cacheable 사용이 가능하다. 코루틴 suspend func에 사용하는 것도 6.1.0 부터 가능하다. 설정 예시 CacheGroup enum class CacheGroup( val cacheName: String, val ttl: Duration, ) { ...
afterStep에서 검증 로직 돌린 후, 다음 Step 실행하지 않고 배치를 종료하고 싶은 경우가 있다. 배치 애플리케이션을 아예 종료해버리는 방법도 있지만, 보다 graceful 하게 처리하고 싶은 경우, 다음 Step이 실행되지 않도록 하려면? 종료 상태를 나타내는 Status는 BatchStatus와 ExitStatus 두개가 있다. ...
패키지 vs 모듈 나누는 기준 패키지가 아니라 별도의 (멀티 모듈, 서브 모듈)로 구성했을 때의 장점은? ▲ 관심 분리를 통한 스파게티 코드 방지, 변경 범위 축소 왜 세모? 패키지만 나눠도 효과를 볼 수 있는 영역이기 때문. 단, 분리된 패키지 간 참조는 양방향이고, 분리된 모듈 간 참조는 단방향만 가능하다는 ...
왜 하이퍼클로버가 가치가 있는지? 왜 경영진은 거기에 집중했나? AI는 게임체인저가 맞고, 각 서비스에 무조건 도입은 다 될거임 차이점은 원천기술 가지고 자체적으로 해낼 수 있느냐, 아니면 openai같은데서 돈내고 가져다 쓰느냐. 이 차이가 있음. 어차피 FMops 운용하는 레이어부터는 어느 회사든 다 있을거같구 그 아래 레이어를 원천기술가지고 ...
인덱스 관련 이론 6장. 물리적 데이터베이스 설계 : 인덱스 관련 https://dataonair.or.kr/인덱스 기본 원리 index range scan index full scan index unique scan index skip scan 등등 다양한 인덱스 스캔 방식과 ...
@Test fun typeCastTest() { val stringMap = mapOf( "a" to "0", "b" to "10.01" ) val bigDecimalMap = stringMap as Map<String, BigDecimal> println(bigDecimalMap) ...
Spring Data JDBC에서 native query 사용하기 Spring Data JDBC를 사용할 때, CrudRepository 와 자동 생성 쿼리 만으로는 커버가 되지 않는 경우가 반드시 생긴다. 복합키 사용하는 경우 Spring Data JDBC에서는 복합키를 아직 지원하지 않는다.https://github.co...