본문 바로가기

Programing

(403)
[스프링] 생성자가 private 일때 스프링은 객체는 어떻게 만들까? 어제 지니님의 요청한 코드리뷰를 하다 아래와 같은 코드를 발견했다. (이름은 적절히 각색하였습니다.) import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @Getter @Setter @NoArgsConstructor(access = AccessLevel.PRIVATE) class ReceiptProperties { private String receiptUrl; } 내가 하려는 이야기는 lombok을 썼다는 것이 아니고 왜 private 생성자로 결정 했을까가 포인트이다. 위의 코드를 일반 자바코드로 풀어쓰면 아래와 같다. class ReceiptProperties { p..
[Spring] FieldError의 계층구조 스프링 Controller에서 파라미터 에러가 나면 BindingResult 로 바인딩 결과를 받아 올 수 있다. @RestController @RequestMapping(value = "/some") public class SomeController { @PostMapping(value = "/thing") public ResponseDto ready(@RequestBody @Valid Params params, BindingResult bindingResult) { if (bindingResult.hasErrors()) { // ... } 만약에 결과를 받지 않을 경우 @Valid에서 실패한 것은 MethodArgumentNotValidException 예외가 던져진다. 이 예외 안에는 위의 Cont..
[JPA] H2 테스트 코드에서 createdAt 필드가 없던 이유 코드리뷰에서 save 를 반복하며 직접 iteration을 도는 것보다 saveAll 을 호출하는 것이 성능상 더 좋을 것 같다는 comment가 달렸다. 정말로 그럴지 테스트 해보기 위해 테스트코드를 짰다. 사실 테스트라기 보다는 리스트로 데이터를 saveAll을 수행시 어떻게 동작하는지 디버깅을 해보려는 것이었다. @DataJpaTest @ActiveProfiles("test") class RequestRepositoryFunctionalSpec extends Specification { @Autowired RequestRepository sut def "saveAll 로 처리하면 성능상 이점이 있을것이다 by yh"() { given: List entities = [ getDummyEntityWit..
[Java] Effective Java의 Dogma 어제 코드리뷰를 받다가 아래와 같은 댓글을 보았다. from보다는 of가 더 적절할 것 같네요. from: 매개변수를 하나 받아서 해당 타입의 인스턴스를 반환하는 형변환 메서드 of: 여러 매개변수를 받아 적합한 타입의 인스턴스를 반환하는 집계 메서드 이펙티브 자바의 첫 아이템 '생성자 대신 정적 팩토리 메서드를 고려해보자'가 적용된 부분에 대한 리뷰이다. 리뷰하신 분은 책의 내용을 comment에 같이 적어두었다. 이펙티브 자바에 나오는 것 같아서 찾아보니 아래와 같이 맞았다. 한글판은 12~13쪽이다. 평소에 Junior 개발자들이 이펙티브 자바를 스터디를 할 때 참관하면서 교조주의(敎條主義)에 빠지는 것을 자주 경계했었다. 교조주의란 무언가에 대한 굳은 믿음과 그러한 가치관을 뜻하는 의미로 도그마(..
[Java] count++, count+=1, count = count + 1 차이는 아래와 같은 반복문이 있었는데 public class ForSumFrom1To100Example { public static void main(String[] args) { int sum = 0; for (int i = 1; i
[Java] Comparable vs Comparator 비교 Q. 질문 compareble은 정해진 기준으로 정렬할 때 사용하고 comparetor는 사용자가 원하는 기준을 커스텀해서 사용할 때 사용한다고 배웠는데 compareble도 리턴값만 수정하면 사용자가 원하는대로 기준값을 설정 할 수 있는 것 아닌가요? 이 둘의 차이점과 사용 용도의 차이를 잘 모르겟습니다. 인터페이스의 정의 다른 것을 찾아보기전에 각 인터페이스의 정의를 보고 넘어가자. Comparable 인터페이스 (docs) package java.lang; public interface Comparable { public int compareTo(T o); } Comparator 인터페이스 (docs) package java.util; @FunctionalInterface public interfa..
[Java] 참조(Reference)와 주소의 관계 자바 카페에서 2020-07-24 에 논쟁을 했던 내용이다. 어떤 자바를 공부하는 사람이 아래와 같은 질문을 했다. 질문 내용: equals(), == 질문드립니다. - 질문 내용 : 안녕하세요. 자바에서 equals(), ==는 주소값이 같은지 확인하는거라 들었는데요. class Person { String name; public Person(String name) { this.name = name; } @Override public boolean equals(Object obj) { if(!(obj instanceof Person)){ return false; }else{ return this.name == ((Person)obj).name; } } } 위 예제 처럼 equals를 오버라이딩 했습니다..
[GetTogether] macOS 용 자소교정기 - 발단 2020년 2월이 되어 상반기가 끝나서 평가를 했다. 평소 프로젝트를 디렉토리로 관리를 해서 ls 명령을 파일로 만들어서 쓰려고 했는데 한글 자소가 풀리는 현상이 있었다. 예) 위의 폴더를 ls 명령과 리다이렉션을 이용하면 디렉토리 목록을 파일로 만들 수 있다. 하지만 list.txt 파일의 내용은 아래와 같았다. 한글의 자소가 풀어졌던 것이다. 다만 이것은 텍스트 에디터 Sublime Text 2 이 유니코드의 NFD를 제대로 처리를 못하고 있어서 이렇게 보이는 것이다. NFD를 처리하고 있는 기본 텍스트 편집기는 아래와 같이 제대로 보인다. 결국 mac OS에서 윈도우로 옮겨진 파일 이외에도 내부적으로 NFD로 구성된 한글이 문제가 발생될 수 있는 것을 경험한 것이다. 그래서 NFD로 되어 있는 파일..