TIL

2021.07.29 기록장

Gisungcu 2021. 7. 28. 23:06

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의 장점 중에 핵심기능 변경이 전부는 아니다. 부가기능을 넣을 수 있는 데코레이터 패턴을 적용 가능하다는 점등이 더 있다.