일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jpa lazy
- 비기능적 요구사항
- kotlin ::
- java predicate
- 스프링di
- 토비의 스프링
- fetch join
- 기능적 요구사항
- 자바 필터
- 스프링부트 도커
- 스프링 시큐리티 설정
- 스프링 포매터
- method refetence
- 스프링시큐리티
- 그래프큐엘
- ioc컨테이너
- Spring
- Atomicity
- 소프트웨어의 품격
- 도커 이미지 빌드
- IOC
- 동적파라미터
- kotlin 리팩터링
- 수정자주입
- 정적팩토리메서드
- 스프링
- spring formatter
- 생성자주입
- open-session-in-view
- jpa no session
- Today
- Total
목록JAVA (18)
공부기록
try-finally보다는 try-with-resources를 사용하라 try-with-resources 는 AutoCloseable인터페이스를 구현해야한다. 자바 라이브러리와 많은 서드파티 라이브러리들의 수 많은 클래스와 인터페이스가 이미 AutoCLoseable 을 구현한 상태다. 닫아야 하는 자원을 쓰는 클래스를 만들어야한다면 AutoCloseable 을 반드시 구현하자. try-with-resources 의 기본 형태 try(InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dst)){ ... }catch(IOException e) { ... }finally { ... }
다 쓴 객체 참조를 해제하라 자바는 가비지컬렉터 덕분에 메모리를 직접 관리하지 않아도 된다. 그렇다고 메모리 관리에 신경쓰지 않아도 된다는 뜻은 아니다. Stack 구현한 간단한 코드 중 일부 (메모리 누수가 일어난다.) ... public Object pop() { if(size == 0) { throw new EmptyStackException(); } return elements[--size]; } ... 이 코드에서는 스택이 커졌다가 줄어들었을 때 스택에서 꺼내진 객체들을 GC가 회수하지 않는다. 스택이 그 객체들의 다 쓴 참조를 여전히 가지고 있기 떄문. 다음은 그것을 개선한 코드다. public Object pop() { if(size == 0) { throw new EmptyStackExce..
불필요한 객체 생성을 피하라 똑같은 기능의 객체를 매번 생성하기보다는 객체하나를 재사용하는 편이 낫다. 특히 불변 객체는 언제든 재사용할 수 있다. 대표적인 안티패턴 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); } }..