본문 바로가기

JAVA/Effective Java10

Item8. finalizer와 cleaner 사용을 피하라 이 문서가 다루는 것 finalizer와 cleaner 사용법과 문제점 대신 Auto 리소스 정리 작업의 필요성 안전망 역할으로써의 cleaner phanom reference 결론 객체 소멸 전 리소스를 정리하는 작업을 할 때 finalizer와 cleaner를 사용하지 말아라. 대신 AutoCloseable을 구현하고 try-with-resources를 사용해라. finalizer는 아예 사용하지 말아라. (자바 9부터 deprecated됨) cleaner는 리소스나 네이티브 피어 회수가 되지 않는 문제를 대비한 안전망 정도로만 사용해라. 이런 경우라도 불확실성과 성능 저하에 주의해야한다. finalizer와 cleaner는 무엇인가? finalizer와 cleaner는 객체 소멸 전 리소스를 정리하.. 2023. 5. 29.
Item3. 생성자나 열거 타입으로 싱글턴임을 보증하라 다루는 내용 방법1 : private 생성자 + public static final 필드 방법2 : 퍼블릭 스태틱 메소드 방법3 : enum 리플렉션 공격 역직렬화 시 깨지는 싱글톤 제네릭 싱글톤 팩토리 메소드 메소드 참조와 Supplier 코드로 만드는 싱글톤의 한계 싱글톤 레지스트리 싱글톤의 활용 싱글톤 만들 때 꼭 무상태로 만들자!!!! 방법1. private 생성자 + public static final 필드 public class Elvis { /** * 싱글톤 오브젝트 */ public static final Elvis INSTANCE = new Elvis(); private Elvis() {} public void sing() { System.out.println("Elvis is singi.. 2023. 5. 14.
Item2. 빌더는 생성자에 매개변수가 많을 때 고려하라 이 문서가 다루는 내용 빌더 패턴의 사용법과 장점 정적 팩토리 메소드와 빌더의 비교 정적 내부 클래스를 사용한 빌더 인터페이스를 두어 유연하게 만든 빌더 내부 클래스의 메모리 누수 빌더 패턴 적용이 유효한 경우 스프링부트 자동구성에서 빌더 찾기 : Builder, Consumer, Configurer Builder 사용 예시 : TaskExecutionAutoConfiguration Builder, Consumer 사용 예시 : JacksonObjectMapperConfiguration Builder, Configurer 사용 예시 : RestTemplateAutoConfiguration Builder Pattern 빌더 객체는 정적 팩토리 메소드와 마찬가지로 인스턴스를 얻는 방법을 추상화하는 책임을 가.. 2023. 5. 14.
Item1. 정적 팩터리 메소드는 인스턴스를 얻기를 추상화한다 이 문서가 다루는 것 정적 팩터리 메소드는 인스턴스를 얻기를 추상화한다 static 키워드 메소드 시그니처의 추상화 : 상위 관점에서의 협력 기술 인스턴스 얻는 방법의 추상화 : 플라이웨이트(캐싱), 싱글톤 반환 타입의 추상화 : 인터페이스를 보고 프로그래밍하라 서비스 제공자 프레임워크 관점에서의 유연성 : 스프링, ServiceLoader, 브리지 패턴 상속 vs 합성 정적 팩토리 메서드의 네이밍 패턴과 자바 독스 Simple Factory, Factory Method, Abstract Factory 패턴 비교 클래스의 인스턴스를 얻는 방법으로 정적 팩터리 메서드를 사용할 수 있다. 정적 팩터리 메소드는 인스턴스를 얻는 방법을 추상화하므로, new 연산자를 사용하는 것보다 훨씬 .. 2023. 5. 14.