2021.07.29 기록장
ToDo
- 알고리즘 2문제
- 책 읽기
- 토비의 스프링
Done
- 토비의 스프링
- 알고리즘 1문제
Weekly goal
- 책 읽기
- 토비 스프링 코딩
- 북마크 보기
토비의 스프링
687p.
@Import 어노테이션의 사용 이유는 자바 클래스로 된 설정 정보를 가져올 수 있기 때문이다.
여기서는 SQL 관련된 설정을 따로 뺐었다. 이유는 독립적으로 변경되고 모듈로 사용할 수 있겠다는 판단이 있었기 때문이다.
기존은 @Configuration에서 @Import로 다른 class를 추가를 하면 그쪽의 설정 정보도 사용하게 된다.
690p.
@Profil 어노테이션은 사용처마다 다른 설정 정보를 사용하기 위해 사용한다.
예제로 AppContext가 @Import로 test설정과 product설정을 가지고 있다면 실행 시에 product 설정을 가져가야 한다.
그래서 그 정보를 필터링하기 위해 사용된다.
Test설정 정보에 @Profile("test필터링 이름")을 지정해 주고 사용처 ex) test에서 @ActiveProfiles("test필터링 이름")으로 구분해서 특정 설정만 사용할 수 있다.
그럼 다른 쪽의 @Profile("product")는 빈으로 만들어지지 않는다.
697p.
@PropertySource("/data.properties")로 특정 프로퍼티를 가져올 수 있다. 이 정보는 컨테이너가 관리하는 Environment 타입의 환경 오브젝트에 저장된다. 또는 @Value로 가지고 올 수 있다.
707p.
@Enable* 어노테이션은 @Import를 대체할 수 있다. 뭐 다른 이름을 명시해서 더 좋다?. 실제로 저번에 사용했던 @EnableTransactionManagement를 열어보면 내부에선 @Import를 사용해서 다른 설정 정보를 사용하고 있다.
737p.
pojo의 장점은 유연한 방식으로 test가 가능하다는 것
743p.
DI의 장점 중에 핵심기능 변경이 전부는 아니다. 부가기능을 넣을 수 있는 데코레이터 패턴을 적용 가능하다는 점등이 더 있다.