Programing (403) 썸네일형 리스트형 [Spring] ServiceLocatorFactoryBean 어떤 기능이 여러 출처에 의해 분기를 해야하는 경우가 실무에서는 자주 생긴다. 주문 도메인이라면 처음에는 카테고리 A에 대해서만 판매를 하다가 카테고리 B라는 것이 생긴다. 결제 도메인이라면 처음에는 카카오페이만 지원을 했더라도 나중에 다른 네이버페이를 추가할 수 있다. 이럴 경우 레이어를 두는 것이 보통 일반적이다. Client -> KakaopayService -> KakaopayExternalAPI 이런식으로 되어 있는데 네이버 페이를 추가한다면 Client -> PaymentService -> KakaopayService -> KakaopayExternalAPI -> NaverpayService -> NaverpayExternalAPI 이런식으로 분기를 할 수 있는 계층(위에서 PaymentSer.. [Spring] Boot 빈 의존성 사례 - Spring Integration (TCP) 하는 방법은 검색해보면 쉽게 찾을 수 있다. 글을 쓰는 이유는 실무에서 어떤 경우에 발생하는지 기록을 하기 위함이다. 스프링이 관리하는 객체, 즉 빈은 의존하고 있는 것이 명시적으로 드러날 때는 초기화 과정에서 필요한 빈들을 먼저 초기화를 해준다. 하지만 간접적으로 빈을 사용하는 경우 초기화 시점에 필요한 빈이 없을 수 있기 때문에 애플리케이션에서 실패가 발생한다. 내가 경험한 사례는 다음과 같다. TCP/IP 전문 통신을 해야해서 Spring Integration프로젝트 중 TCP and UDP Support 기능을 이용했다. Spring Integration 5.0 부터는 Java DSL을 통한 설정이 가능하기에 Configuration은 아래와 같이 구성했다. @Configuration @Enabl.. [Java] Object.hashCode JavaDoc - History Java 1.3.1 hashCode public int hashCode()Returns a hash code value for the object. This method is supported for the benefit of hashtables such as those provided by java.util.Hashtable. The general contract of hashCode is: Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no i.. [Java] "서로 다른 두 객체는 결코 같은 해시코드를 가질 수 없다."? 자바의 정석 453쪽에 보면 "서로 다른 두 객체는 결코 같은 해시코드를 가질 수 없다."라는 말이 나와있다. 물론 Object의 hashCode는 오버라이드가 가능하므로 다음과 같이 코드를 짠다면 무조건 같은 해시코드만 반환이 될 것이다.public class Foo { @Override public int hashCode() { return 1; } public static void main(String[] args) { Foo foo1 = new Foo(); Foo foo2 = new Foo(); System.out.println(foo1 == foo2); System.out.println(foo1.hashCode() == foo2.hashCode()); } }위의 코드를 실행한다면false tru.. [java] Java 8의 시간은 10000년을 파싱 못한다? 10000년까지 살아 있을지는 모르겠지만 테스트 케이스를 만들었는데 LocalDate.parse("10000-01-01") 위와 같은 코드는 아래와 같은 파싱 예외가 발생한다. java.time.format.DateTimeParseException: Text '10000-01-01' could not be parsed at index 0 at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949) at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851) at java.time.LocalDate.parse(LocalDate.java:400) at j.. [Java] Enum에 없는 값을 테스트할 때는 어떻게하지? 통신사 멤버십을 관련 기능을 개발하게 되었다고 하자. (예를 들 때는 현실성이 있는 것이 좋으므로...) 아래와 같은 Enum이 있다고 하자. public enum MembershipType { KT, SKT } 통신사에 따라 사용하는 API가 달라서 묶어주는 구조로 되어 있다고 하자. 물론 다형성을 이용한 전략 패턴을 적용기에 좋은 구조이다. 하지만 갯수가 많지 않아 switch~case로 분기하게 되어 있다고 치자. 코드는 아래와 같이 표현이 가능할 것이다. @Service @RequiredArgsConstructor public class MembershipInspector { private final KtMembershipInspector ktMembershipInspector; private f.. [test] 박*영과 함께하는 spock framework pair programming 제목은 "박*영과 함께하는 spock framework pair programming"이라고 쓰고 사실 꼰대질(?!)을 정리한 것이다. 아마도.. TL;DR (too long, don’t read) 가 될 것 같다. 박*영 님은 같은 회사의 개발자이다. 기존에 jUnit으로 되어 있던 테스트 코드들을 Groovy 기반의 Spock 프레임워크를 도입해서 적용하고 있다고 한다. 처음 접하는 사람들이 공통적으로 겪을 수 있다고 생각해서 공유 및 기록 차원에서 끄적여보았다. 2020-01-14 (화) - 꼰대질1 포인트를 대량 적립해주는 서비스(가칭: MassiveAccumulatingService)에 대한 테스트를 만들고 있었다. 조언 1. 테스트의 이름 - 테스트 대상의 이름을 사용하는 것보다는 테스트가 수.. [sonarqube] 'sonar.jacoco.reportPath' is deprecated 메시지 없애기 sonarqube 태스크를 돌리면 아래와 같은 경고가 나온다. Property 'sonar.jacoco.reportPath' is deprecated (JaCoCo binary format). 'sonar.coverage.jacoco.xmlReportPaths' should be used instead (JaCoCo XML format). Property 'sonar.jacoco.reportPaths' is deprecated (JaCoCo binary format). 'sonar.coverage.jacoco.xmlReportPaths' should be used instead (JaCoCo XML format). 메시지만 나오면 그러려니 하는데 Sonarqube 페이지에서도 경고가 표시된다. 사용하는 .. 이전 1 ··· 10 11 12 13 14 15 16 ··· 51 다음