Trouble Shooting/Spring (3) 썸네일형 리스트형 Effective JAVA를 Spring 프로젝트에 적용해보자 (Item 10~14) 해당 블로그는 Object의 final이 아닌 메서드 equals, hashcode, toString, clone, finalize에 대한 내용으로 모두 재정의를 염두해 두고 설계된 메서드들이기에 활용 방법에 대해 설명한다. Item 10 : equals는 일반 규약을 지켜 정의하라. 기본적으로 equals는 자기 자신 즉, 인스턴스와 비교하기에 재정의를 통해 필드가 같은지 등을 확인할 수 있다. equals 재정의에 대한 경우 객체 식별성이 아닌, 논리적 동치성을 검사하는데 상위 클래스에서 재정의 되지 않은 경우 값 클래스의 경우 Map의 키와 Set의 원소로 활용되는 경우 싱글턴 객체의 경우는 정의가 필요없다. equals 재정의 규약 반사성 : 같은 인스턴스는 같다. 대칭성 : x.equals(y).. Effective JAVA를 Spring 프로젝트에 적용해보자 (Item 6~9) Item 6 : 불필요한 객체 생성을 피하라 기본적으로 자바에서 객체의 낭비를 피하는 것이 일반적이다. 가장 큰 예시가 String이다. 생성자를 통해 객체를 생성하지 않는 이상 같은 문자 리터럴에 대해서 같은 머신에 대해 같은 객체를 사용한다. 사용하는 경우는 다음과 같다. 1. 불변 객체 (예 : String) 2. 불변 객체가 아니더라도 프로그램 도중 변경되지 않을 객체 3. 어댑터 (예 : Map의 keySet) Spring에 적용 그렇다면 Spring 프로젝트에는 어떻게 적용이 가능할까? 첫번째 예시인 불변객체는 기본적으로 해당 객체가 불변객체인지 아닌지 확인 후 그대로 사용하면 된다. 또한 세번째 예시도 마찬가지로 적용이 가능하다. 두번째 예시인 프로그램 도중 변경되지 않을 객체가 프로그램 중.. Effective JAVA를 Spring 프로젝트에 적용해보자 (Item 1~5) Item1 : 생성자보다 정적 팩터리 메서드 사용을 고려하자. 기본적으로 spring에서 클래스에 대한 인스턴스 생성경우는 여러가지가 존재한다. - Controller, Service, DAO 등 기본적인 베이스 클래스에 대한 생성 => Spring에서는 해당 클래스의 인스턴스 생성을 관리해준다. 따라서 인스턴스 생성에 대해 많은 부분을 고려할 필요가 없다. - DTO, Entity 등 클래스 => 클라이언트에 요청에 맞게 생성하는 경우에는 사용이 불필요하다. (통신에서 기본생성자와 getter/setter를 통해 인스턴슬 생성하기에 생성자 생략이 어렵다.) => 개발자가 프로그램 중간에 임의로 인스턴스를 생성하는 경우에 사용한다. 적용 사례 MemberDTO : 회원가입 관련 DTO public cla.. 이전 1 다음