스프링컨테이너 내부에는 빈 저장소가 존재한다.빈 저장소는 key인 빈 이름, value인 빈 객체를 가지고 있다.스프링 컨테이너는 @Configuration이 붙은 Appconfig를 설정정보로 사용한다. 또한 여기서 @Bean이라 적힌 메서드를 모두 호출해서 반환된
게시판 검색 기능 구현중에 어떤 단어를 검색하면 그 단어를 포함한 사용자들을 찾아서 그 사용자들의 게시물을 가져오는 기능을 구현하게 되었다. 처음에 짤때에는 사용자 엔티티를 조회하는 쿼리 구문과 그 사용자 엔티티와 매핑되어있는 게시물 리스트를 받아서 가져오는 쿼리 구
펫을 돌보는 서비스를 이용할 사용자는 정보를 따로 받아야 하는데 새로운 엔티티를 구현하고 기존 사용자 테이블과 Join을 해 구현하면 좋겠다고 생각했다.
repository에서 Optional findByUsername(String username);을 선언했을때orElseThrow()를 선언하면 null이 아닐경우 Optional<>안의 value를 가져온다
Sync : 끝났는지 계속 체크, 일이 끝났으면 바로 처리함ASync : 일이 끝나도 그 결과값을 바로 처리하지 않음Blocking : 다른 일을 하는동안 대기상태가 됨Non-Blocking : 호출 후 대기하지 않고 자신의 일을 함
이 패턴은 사용중인 알고리즘을 교채할때 코드 수정없이 교체할 수 있다는 장점이 있다.Context에서 Strategy에게 위임하고 있으므로 Context 수정 없이 Strategy를 바꿀 수 있다.
new 예약어clone() 사용, 자기 자신을 바탕으로 새 인스턴스를 생성 깊은 복사가 안됨리플렉션의 newInstance() 사용
Builder 패턴은 인스턴스들을 조립하는 역활을 하는 패턴입니다.Builder 클래스는 인스턴스를 생성하기 위한 메서드를 선언합니다.Director는 Builder의 매서드를 사용하여 인스턴스를 생성합니다.ConcreateBuilder는 Builder의 메서드를 구현
abstract 클래스는 abstract 메서드만 선언 (생성자 불가)default로 선언된 메서드의 범위는 같은 패키지 내에서만 호출 가능
JAVA8에서 인터페이스에 디폴트 메소드가 추가되었습니다. 원래 인터페이스는 abstract메서드만 사용할 수 있었지만, JAVA8에서 생긴 default메서드를 사용하면 인터페이스 내에서도 클래스를 정의할 수 있게 되었습니다.