일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- method refetence
- 그래프큐엘
- 스프링di
- 스프링 시큐리티 설정
- jpa no session
- fetch join
- 스프링부트 도커
- 정적팩토리메서드
- 스프링 포매터
- 생성자주입
- Spring
- spring formatter
- IOC
- kotlin 리팩터링
- 기능적 요구사항
- 소프트웨어의 품격
- 수정자주입
- 토비의 스프링
- 자바 필터
- ioc컨테이너
- 스프링
- kotlin ::
- Atomicity
- 스프링시큐리티
- jpa lazy
- open-session-in-view
- 동적파라미터
- 비기능적 요구사항
- java predicate
- 도커 이미지 빌드
- Today
- Total
목록분류 전체보기 (109)
공부기록
불필요한 객체 생성을 피하라 똑같은 기능의 객체를 매번 생성하기보다는 객체하나를 재사용하는 편이 낫다. 특히 불변 객체는 언제든 재사용할 수 있다. 대표적인 안티패턴 String str = new String("string"); 실행될 때마다 새로운 String 인스턴스를 생성한다. 이 문장이 반복문 안이나 자주 호출되는 메소드 안에 있다면 쓸데없는 낭비다. 개선된 버전 String str = "string" 이 코드는 하나의 String 인스턴스를 사용한다. 자바스펙에 따르면 이와 똑같은 문자열 리터럴을 사용하는 모든 코드는 같은 객체를 재사용함을 보장한다. 생성자는 호출할 때마다 새로운 인스턴스를 만들지만, 아이템1에 나온 정적팩터리 메서드를 제공하는 불변클래스에서는 불필요한 객체 생성을 피할 수 있..
자원을 직접 명시하지 말고 의존객체주입을 사용하라. 많은 클래스가 하나 이상의 자원에 의존 인스턴스를 직접 사용하면 유연성이 떨어진다. public class SpellChecker { private static final Lexicon dictionary = new ...(); } 클래스가 여러자원 인스턴스를 지원해야한다. 인스턴스를 생성할 때 생성자에 필요한 자원을 넘겨주는 방식. 팩터리 메서드 패턴을 구현하는 방식 public class SpellChecker { private final Lexicon dictionary; public SpellChecker(Lexicon dictionary) { this.dictionary = Objects.requireNonNull(dictionary); } }..
인스턴스화를 막으려거든 private 생성자를 사용하라. Util 클래스를 만들 때 보통 정적 메서드와 정적 필드만을 담은 클래스를 작성한다. 이런 클래스는 인스턴스로 만드려고 설계한 클래스가 아니다. 그렇다고 생성자를 안만들면 컴파일러가 알아서 public 생성자를 만들어준다. 따라서 명시적으로 private 생성자를 만들어서 클래스의 인스턴스화를 막자. public class UtilClass { private UtilClass() { throw new AssertionError(); } ... } 클래스 내부에서라도 생성자를 호출하지 않기 위해 private 생성자 안에서 AssertionError를 던진다.
private 생성자나 열거 타입으로 싱글턴임을 보증하라. 싱글턴? 인스턴스를 오직 하나만 생성할 수 있는 클래스. 무상태 객체나, 설계상 유일해야 하는 시스템컴포넌트 등.만드는 방식 public static final 필드 방식의 싱글턴 public class Singleton { public static final Singleton INSTANCE = new Singleton(); private Singleton() { ... } } private 생성자는 Singleton.INSTANCE를 초기화할 때 딱 한 번만 호출된다. private 생성자이므로 인스턴스가 전체 시스템에서 하나 뿐임을 보장한다. ( 예외로는 리플렉션을 이용한 생성자 호출) 정적 팩터리 방식의 싱글턴 public class Si..