목록전체 글 (16)
잡동사니를 모아두는 서랍장
reasource 내의 파일 내용을 참조해야하는 로직이 있었다. 늘 그렇듯 자연스럽게 File 을 사용했다. ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); File myFile = new File(getClass().getClassLoader().getResource("test.yaml").toURI()); //error MyTemplate myTemplate = mapper.readValue(myFile, MyTemplate.class); 로컬에서 ide로 실행시켰더니 멀쩡히 동작. 그래서 다 됐다~하며 도커에 올리려니... Caused by: java.lang.IllegalArgumentException: URI is not hierarchi..
여태 한글외의 문자를 거르는 정규식을 만들 때 [ㄱ-힣]을 사용했었다(아마 많이들 그럴거다). 하지만 여긴 함정이 있다...테스트중에 오류가 있다고 해서 확인해 봤더니 아래 문자가 포함되어 있었는데 진행이 되었다... ㉡ 여기서부터 멘붕, 찾아보니 유니코드의 범위문제였었다. ㄱ : %u3131 힣 : %uD7A3 ㉡ : %u3261 즉, 저 요상한 특수문자가 해당 정규식 범위에 들어간다! 여기서부터 이제 일일히 유니코드 표를 보며 범위를 추려야 하나...하고 낙담하고 있었는데... 그러던중 좋은 내용의 글을 찾았다! haah.kr/2017/08/23/alphabetic-letter-validation/ 정규식으로 (한글) 문자만 골라내기 오늘 라라벨 꾸준 코딩 모임에서 나왔던 이야기인데, 라라벨의 유효성..
메소드 내부에서 사용하지 말자. mommoo.tistory.com/92 [Spring] @Transactional 사용시 주의해야할 점 Spring @Transactional 주의점 안녕하세요. 오늘은 Spring 의 @Transactional 어노테이션을 사용할 때, 주의점에 대해 포스팅합니다. Spring 에서 JPA 기술을 쓸 때 빼놓을 수 없는 기능중 하나는 @Transa. mommoo.tistory.com 확인된 예외는 롤백되지 않는다. stackoverflow.com/questions/28348985/spring-transactional-commiting-partial-results-even-exception-is-thrown
아래는 테스트 코드 package com.kakao.keyword; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; public class ReflectionTest { private Class clazz; @BeforeEach public void init() { clazz = (Class) TestClass.class; } @Test public void test() throws Exception { T instance = clazz.getDeclaredConstructor().newInst..
자바 개발자란 사람이 이 5원칙도 제대로 기억 못하고 맨날 찾아보고 있다니...정리하며 다시 기억하자. 1. 단일 책임 원칙 (Single Responsiblity Principle, SRP) - 클래스는 단 하나의 책임만 가질 것. 클래스 단일 책임에 관한 원칙. 여러 기능을 넣지 말자. 나중에 내부 기능(책임)들 끼리 결합도가 높아진다. 이렇게 된 상황이면 다른 클래스로 쪼개보자. 2. 개방-폐쇄 (Open-Closed Principle, OCP) - 소프트웨어 구성요소(클래스, 함수, 모듈, 컴포넌트 등등)은 확장에는 열려있고, 변경에는 닫혀있어야 한다. 3. 리스코브 치환의 원칙 (Liskov Substitution Principle, LSP) - 자식 클래스(서브 타입) 은 부모 클래스(기반 타..
도움되었던 질문과 답변들을 찾을 때 마다 하나씩 모아보자. 나중에 필요할 때 도움되겠지. junit static inner class 테스트 방법 stackoverflow.com/a/30210763/14704203 How to test private method of a private static class How can i unit test a private method, which is in a private static class. public class ProjectModel { //some code private static class MyStaticClass{ private model (... stackoverflow.com @Transactional 이 안먹히거나 부분적으로 먹힐 때 확인해볼..
전 회사에서 마주했던 이슈중에 pk를 auto_increment 걸어놓은 테이블에 insert 시 idx 값이 이전에 삽입된 idx 값보다 이상하리만큼 높아진걸 발견했다. 한 두개 차이면 그냥 신경쓰지 않으려고 했는데 거의 1000이 넘게 뛰어있었다. 때문에 그냥 넘기기엔 나중에 문제가 생길 수 있을 거 같아 원인을 찾아봤고 정리한다. 상황은 이랬다. 기존에 초기 테이블에 데이터를 넣을 때 임의로 운영팀이 스크립트 파일을 실행하여 다량의 데이터를 넣어야 하는 환경이다. 중간에 실패했다고 모든 쿼리를 중단하면 안되는 상황이라 insert ignore into를 사용했었다. 그런데 위에서 말한대로 idx가 널뛰기를 하는 상황이 생겼다. 찾아보고 나름 테스트를 해본 결과 innodb의 auto_incremen..
Request Body를 인터셉터에서 읽고 싶을 때 2편 주의 꼭 인터셉터가 아니라도 body 값은 한번 읽히면 날아간다는 건 동일하다. 저번엔 필터에서 래핑하여 인터셉터에서 읽었지만 그렇게 하면 성능 이슈가 있다고 한다. 이번엔 다른 대안으로 소개받은 RequestBodyAdviceAdapter 를 사용해서 body값을 다른 곳에서 읽어보려 한다. 정확히 말하자면 body를 읽는건 여전히 한번이지만, 이 내용이 변환된 객체를 컨트롤러로 넘어가기 전에 확인하는 작업을 해보자. RequestBodyAdviceAdapter 는 RequestBodyAdvice 인터페이스를 구현한 클래스이다. RequestBodyAdvice 는 Body의 내용을 읽고 Object로 변환하기 전에 요청을 커스텀 하거나, 변환된 ..