본문 바로가기

Java23

[Java] Comparator 로 복잡한 정렬 비즈니스 녹여내기 오랜만에 올리는 게시글은 Java 8 의 Comparator 사용하여 복잡하고 null-safe 한 정렬 비즈니스를 녹였던 방법에 대한 정리 글이다. * 여기서 복잡하다는 건, 같은 정렬조건이면 한번 더 정렬 할 우선순위가 존재함을 뜻함 전제 조건 1. 정렬할 대상은 서울에 있는 (모든)학교 리스트다. ==> schools 2. 정렬조건 [1순위] 각 학교에 있는 도서관의 사서 선생님 연세 내림차순 ==> school > library > teacher.age (학교1:도서관1:사서쌤1 관계) [2순위] (나이가 같으면) 학교 seq 오름차순 3. 이때 학교 정보가 없을 수도 있고, 사서 선생님의 연세 또한 null 일 수 있다고 가정하자. 생각나는대로 적은 정렬 코드 모든학교리스트.sort( Compa.. 2022. 11. 21.
[Java] 운영 도중에 XML Parsing Error 가 발생했다! (with. NoSuchMethodError) 제목 그대로다. 운영 도중에 XML Parsing Error 가 발생했다 🙀 로컬과 개발환경, 그리고 3개월 간 운영에서 이슈없이 잘 되던 기능이었다. 그런데 어제부터 갑자기 아래와 같은 원인으로 오류가 발생하면서 기능이 멈추는 현상이 발생했다. java.lang.NoSuchMethodError: org.json.JSONTokener.(Ljava/io/Reader;) 코딩에 `갑자기` 가 없다는 것을 안다. 결국은 내가 무지 했거나 완벽하게 분석, 설계하지 못해서 발생한거다. 그럼에도 이 포스팅을 작성함으로써 나를 포함한 다른 이들에게 도움이 되었으면 한다 😇 원인은 JSONTockener 클래스가 내 라이브러리에서 중첩되어 있는 상황에서 JSONObject resultJson = XML.toJSONOb.. 2021. 8. 6.
[JUnit] org.mockito.exceptions.misusing.UnnecessaryStubbingException org.mockito.exceptions.misusing.UnnecessaryStubbingException: Unnecessary stubbings detected. Clean & maintainable test code requires zero unnecessary code. Following stubbings are unnecessary (click to navigate to relevant line of code): 1. -> at [FQCN].MyServiceTest.setUp(MyServiceTest.java:43) Please remove unnecessary stubbings or use 'lenient' strictness. More info: javadoc for UnnecessaryS.. 2021. 7. 26.
[Maven] Error: java: error: release version 5 not supported Error: java: error: release version 5 not supported IntelliJ 에서 Maven 으로 프로젝트 빌드 시 위와 같은 오류가 발생하였고 IntelliJ -> Preferences -> Build, Execution, Deployment -> Compiler -> Java Compiler 에서 Target bytecode version 을 5 에서 8 로 변경해주어 해결 완료 :) 2021. 7. 1.
[JAVA] SHA256 암호화 Util 서비스단에서 SHA256 암호화가 필요했는데, 뭔가 너무 수동으로 짠 느낌의 메소드들만 있어서 분명 어딘가에 Util 이 있을거라 생각하고 계속 서칭하니까 나온! import org.apache.commons.codec.digest.DigestUtils; DigestUtils.sha256Hex("암호화 할 문자열"); apache 짱짱. 2021. 1. 13.
[JAVA] CURL 로 다른 API 호출하는 방법 (with. HttpClient) Java + Spring framework 에서 CURL 처럼 리턴 받을 데이터 없이 다른 API 를 호출 할 일이 생겼다. 일반 Http 통신을 하기보다는 CURL 처럼 쓕 보내보고 싶었는데, 생각만큼 소스를 가볍게 짜기엔 어려운 것 같았고 아래가 최선이었다. public void sendOtherApi(Object sendObj) { try { // POST 메소드 URL 생성 & header setting HttpClient client = HttpClientBuilder.create().build(); HttpPost postRequest = new HttpPost("http://localhost:8080/test/curlConnect"); postRequest.setHeader("Accept",.. 2020. 12. 1.