Java22 [Java] Java 8 사용하기 : default method 목차 Interface를 업데이트하면 일어나는 일 Interface의 한계와 default method default method 사용 예제 심화 : resolution 규칙 정리 Java 8에 추가된 새로운 기능 default mehtod를 소개한다. Java 8부터 Interface에 static method, default method를 생성할 수 있게 되었고, 이미 public 하게 공개된 API Interface에 대해 더 편리하게 method를 추가할 수 있게 되었다. 라이브러리 개발자들은 public Interface API를 업데이트할 때 부담을 덜 수 있게 되었고, 라이브러리 사용자들은 Interface를 더 유연하고, 기능적으로 조합해서 구현할 수 있게 되었다. Interface를 업데.. 2023. 9. 3. [Java] Java 8 사용하기 : Optional로 Null 지혜롭게 다루기 목차 Null을 다루는 방식 (Java 8 이전) Java 8에 추가된 Optional 유용한 case와 기타 API Java 8에 추가된 주요 기능 중 개인적으로 손에 꼽는 것은 Streams와 Optional이다. Optional은 java.util 패키지에 Java 8부터 추가된 클래스로 클래스명 그대로 Optional 한 값을 다룰 때 유용하게 사용할 수 있는 클래스이다. 포스팅을 간단히 요약하면 Optional을 사용해 아래와 같이 코드를 개선해 볼 수 있게 된다. // Java 8 이전 if(idol != null) { Leader leader = idol.getLeader(); if(leader != null) { Car car = member.getCar(); if(car != null) .. 2023. 9. 3. [Java] Java 8 사용하기 : 가독성과 유연성, 람다와 Streams API 목차 Java 8로 향상되는 가독성과 유연성 익명 클래스 -> 람다 표현식 람다 표현식 -> 메서드 참조 명령적 데이터 가공 -> Streams API 함수형 인터페이스 Java 8 이상의 버전을 사용하면서 legacy를 Java 8로 리팩터링 하는 방법을 정리한다. 같은 주제로 2개 이상의 포스팅을 할 건데, 처음에는 Java 8에 추가된 스펙으로 코드 수준에서 어떻게 리팩터링 해내는지 본다. 이후 포스팅에는 디자인 패턴, 테스트, 디버깅 등의 부분에서 Java 8로 개선해 보겠다. 이 포스팅에서는 Java 8의 주요 스펙에 대해 문법적인 수준의 설명을 생략한다. 필요하다면 oracle java 문서나, 책 modern java in action을 추천한다. https://docs.oracle.com/.. 2023. 8. 16. [SPRING] @Transactional을 얼마나 이해했는지 보자 목차 @Transcational CASE 정리 참고 2022.08.19 - [개발/데이터베이스 시스템] - 트랜잭션 (transaction) SQLException 발동! throw new SQLException(); } @Transcational에도 불구하고 트랜잭션이 commit 되었습니다. case 2~3에서 알 수 있듯 @Transcational은 UncheckedException (RuntimeException)에 대해서 rollback 하는 것이 default라는 것을 알 수 있습니다. 그러나 개발자가 설정하지 않으면 적용될 기본값일 뿐, 우린 많은 옵션을 줄 수 있습니다. case 4 : rollbackFor 속성 @Transactional (rollbackFor = SQLException... 2023. 1. 4. [TOMCAT] webAppRootkey 지정 목차 에러 메시지 원인 해결책 에러 메시지 java.lang.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = [.../tomcat/webapps/애플리케이션A/] instead of [../tomcat/webapps/애플리케이션B/] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files! 해석 : "webapp.root"라는 value가 이미 설정되어있으니 web.xml의 'webAppRootKey' context-param에 유니크한 value를 지정하라! 원인 web.xml의 c.. 2022. 2. 24. [JAVA] String 데이터 타입, String pool 목차 String 객체 String Interning literal vs new String() 참조 String 객체 String 데이터 타입은 기본형이 아니라 객체입니다. 따라서 Stack에 값이 바로 저장되지 않고 Heap영역에 저장되고, 그 주소 값을 참조하는 변수가 stack에 쌓이게 됩니다. (아래 그림 참고) Heap에 저장할 때는 Heap 안의 String pool에 저장합니다. String Interning String 객체가 리터럴로 할당된다면 Heap 영역의 String Constants Pool에 저장되어 관리합니다. 기본적으로 pool안의 객체는 불변성 (Immutability)을 띄며 이 얘기는 값의 수정이 없고, 같은 값이 선언된다면 같은 객체를 참조하도록 한다는 의미입니다. .. 2022. 1. 28. 이전 1 2 3 4 다음