Programming/Java 26

[Java] junit5 test 진행 중 DuplicateJsonObjectContextCustomizer

현상 단위 테스트 실행시 아래와 같이 JSONObject 관련해서 중복되는 class path가 존재한다는 로그가 출력되었다. . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.3.1.RELEASE) 2020-07-15 14:35:10.047 WARN 32292 --- [ main] ory$DuplicateJsonObjectContex..

Programming/Java 2022.11.03

[Youtube][이팩티브 자바] #9 Try-with-Resource

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 9 : Try-Finally 대신 Try-with-Resource 사용하라 자바 라이브러리에서는 InputStream, OutputStream 그리고 java,sql.Connection과 같이 정리(close)가 가능한 리소스가 많은데, 그런 리소스를 사용하는 클라이언트 코드가 보통 리소스 정리를 안하거나 잘못하는 경우가 있다. public class FirstError extends RuntimeException { } public class SecondException extends RuntimeException { } public class MyResource implements ..

Programming/Java 2020.05.26

[Youtube][이팩티브 자바] #8 Finalizer와 Cleaner 쓰지 마세요

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 8: Finalizer와 Cleaner는 피하라 Finalizer는 예측 불가능하고, 위험하며 대부분 불필요하다. 그걸 쓰면 이상하게 동작하기도 하고, 성능도 안좋아지고, 이식성에는 문제가 생길 수 있다. Finalizer를 유용하게 쓸 수 있는 경우는 극히 드물다. public class FinalizerExample { @Override protected final void finalize() throws Throwable { System.out.println("Clean up"); } public void hello() { System.out.println("hi"); } } pu..

Programming/Java 2020.05.25

[Youtube][이팩티브 자바] #7 불필요한 객체 레퍼런스를 정리하자

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 7 : 더이상 쓰지 않는 개체 레퍼런스는 없애자 메모리 직접 관리 자바에 GC(가비지 콜렉터)가 있기 때문에 메모리 관리에 대해 신경쓰지 않아도 될거라고 생각하기 쉽지만, 그렇지 않다. 다음 코드를 살펴보자. // Can you spot the "memory leak"? public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { // 초기화 할때 16만큼 만든다. this.elements = ..

Programming/Java 2020.05.24

[Youtube][이팩티브 자바] #6 불필요한 객체를 만들지 말자

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 6 : 불필요한 객체를 만들지 말자. 기능적으로 동일한 객체를 새로 만드는 대신 객체 하나를 재사용하는 것이 대부분 적절하다. 재사용하면 더 빠르고 있어보인다(new라는 코드를 안써서..?). 불변객체는 항상 재사용할 수 있다. 문자열 객체 생성 자바의 문자열 String을 new로 생상하면 항상 새로운 객체를 만들게 된다. 다음가 같이 String 객체를 생성하는 것이 올바르다. public class StringTest { public static void main(String[] args) { String s1 = new String("log"); String s2 = "log";..

Programming/Java 2020.05.23

[Youtube][이팩티브 자바] #5 의존성 주입

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 5 : 리소스를 엮을 때는 의존성 주입을 선호하라 대부분의 클래스는 여러 리소스에 의존한다. 이책에서는 SpellChecker와 Dictionary를 예로 들고 있다. 즉, SpellChecker가 Dictionary를 사용하고 이를 의존하는 리소스 또는 의존성이라고 부른다. 이때 SpellChecker를 다음과 같이 구현하는 경우가 있다. 부적절한 구현 static 유틸 클래스 유틸클래스 -> 인스턴스로 만들지 않기 때문에 pivate한 생성자로 만들어준다. (지난 강의 #4 참고) package me.whiteship.effectivejava3rd.item05.usecase1; im..

Programming/Java 2020.05.21

[Youtube][이팩티브 자바] #4 인스턴스를 못만들게 하고 싶다면?

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 4. private 생성자로 noninstantiability를 강제할 것 static 메서드와 static 필드를 모아둔 클래스를 만든 경우 해당 클래스를 abstract로 만들어도 인스턴스를 만드는 걸 막을 순 없다. 상속 받아서 인스턴스를 만들 수 있기 때문이다. static 메서드와 static 필드를 모아둔 클래스를 만든 경우 utility 클래스를 이렇게 많이 만든다. utility 클래스는 인스턴스를 만들 필요가 없기 때문에, abstact로 만들어서 강제할 수 있다. static클래스는 너무 많이 쓰면 안좋은 평판이 있다. (하지만 유효한 경우도 있다. Math, Arra..

Programming/Java 2020.05.20

[Youtube][이팩티브 자바] #3 싱글톤을 만드는 여러가지 방법 그중에 최선은?

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 3: private 생성자 또는 enum 타입을 사용해서 싱글톤으로 만들 것. 오직 한 인스턴스만 만드는 클래스를 싱글톤이라 부른다. 보통 함수 같은 Stateless 객체 또는 본질적으로 유일한 시스템 컴포넌트를 그렇게 만든다. 싱글톤은 패턴의 이름. 애플리케이션을 통틀어서 패턴에 인스턴스가 하나만 사용되는 것. 싱글톤을 사용하는 클라이언트 코드를 테스트 하는게 어렵다. 싱글톤이 인터페이스를 구현한게 아니라면 mock으로 교체하는게 어렵기 때문이다. 싱글톤으로 만드는 두가지 방법이 있는데, 두 방법 모두 생성자를 prirvate으로 만들고 public static 멤버를 사용해서 유일..

Programming/Java 2020.05.06