item 8. finalizer와 cleaner 사용을 피하라
Finalizer 와 cleaner 는 예측할 수 없고, 느리고 일반적으로 불필요하다. 왜 사용되지 않는지 단점들을 알아보자. 즉시 수행된다는 보장이 없다. finalizer와 cleaner는 즉시 수행된다는 보장이 없기 때문에, 제때 실행되어야 하는 작업은 절대 할 수 없다. 수행 여부조차 보장하지 않는다. 수행 여부조차 보장하지 않는다. ...
Finalizer 와 cleaner 는 예측할 수 없고, 느리고 일반적으로 불필요하다. 왜 사용되지 않는지 단점들을 알아보자. 즉시 수행된다는 보장이 없다. finalizer와 cleaner는 즉시 수행된다는 보장이 없기 때문에, 제때 실행되어야 하는 작업은 절대 할 수 없다. 수행 여부조차 보장하지 않는다. 수행 여부조차 보장하지 않는다. ...
문자열 자바의 String은 String Pool 에서 관리되어 동일한 문자열은 하나로 관리된다. 하지만 new 로 String을 생성하게 되면 동일한 문자열 이라도 새로 인스턴스를 생성하기 때문에 불필요한 객체를 생성하는 것이다. // 이 방법은 좋지않다. String s = new String("test"); // 이 방법 사용 String...
정적 유틸리티 사용하는 자원에 따라 동작이 달라지는 클래스는 정적 유틸리티 클래스나 싱글턴 방식이 적합하지 않다. public class SpellChecker { private static final Lexicon dictionary = ...; private SpellChecker() {} // 객체 생성 방지 public...
싱글턴이란? 싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 그런데 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기가 어려워질 수 있다. 왜냐하면 타입을 인터페이스로 정의한 다음 그 인터페이스를 구현해서 만든 싱글턴이 아니라면 싱글턴 인스턴스를 가짜(mock) 구현으로 대체할 수 없기 때문이다. 다음으로 싱글턴...
정적 팩터리와 생성자에 제약 정적 팩터리와 생성자에는 똑같은 제약이 하나있다. 선택적 매개변수가 많을때 적절히 대응하기 어렵다는 점이다. 매개변수가 20가지가 넘어가고 필수 매개변수와 선택 매개변수가 있을때 보통 점층적 생성자 패턴을 사용했었다. 점층적 생성자 패턴 필수 매개변수를 받는 생성자 1개, 그리고 선택 매개변수를 하나씩 늘려가며 생성...
정적 팩터리 메서드란? 정적 팩터리 메서드란 객체 생성의 역할을 하는 클래스 메서드이다. public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 정적 팩터리 메서드는 디자인패턴에서의 팩터리 메서드와 다르다. 디자인 패턴중에는 이와 일치하는 ...
ViewResolver dispatcherServlet은 Handler Adapter에서 받아온 view 이름을 가지고 viewResolver에게 이러한 view가 있는지 물어보고 viewResolver는 view가 존재하는지 아닌지 판단하는 역할을 하게된다. 즉, ViewResolver는 사용자가 요청한 것에 대한 응답 view를 렌더링하는 역할...
스프링(Spring) 스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 스프링이라고도 불린다. 동적인 웹 사이트를 개발하기 위한 여러가지 서비스를 제공하고 있다. 스프링은 DI, IOC를 통해 재사용 및 유지보수가 용이한 코드를 작성할 수 있고, 확장성을 가진 코드를 설계할 수 있다 ...
HttpMessageConverter HttpMessageConverter는 기존의 뷰 템플릿으로 HTML을 생성해서 응답하는 것이 아니라 HTTP API(REST API)처럼 JSON형식의 데이터 메시지바디를 직접 읽거나 쓰기 위해 메시지 본문을 다루는 방식을 말한다. 스프링 MVC는 다음의 경우에 HTTP 메시지 컨버터를 적용한다. HTT...
필터, 인터셉터가 필요한 이유 스프링 코드를 작성할 때 공통적으로 처리해야할 업무들이 많다. 공통업무에 관련된 코드를 모든 페이지 마다 작성해야한다면 중복된 코드가 많아지게 되면 소스관리가 힘들어진다. 즉, 공통처리를 위해 활용할 수 있는 것이 3가지가 있다. Filter Interceptor AOP 이중에서 필터와 인터셉터에 대...