[Spring] 0722 정리

charco·2021년 7월 22일
0

토비스프링

목록 보기
11/11

  • DefaultListableBeanFactory (BeanFactory 상속) -> 대부분의 스프링 컨테이너는 이 클래스를 이용해 빈을 등록하고 관리함. @Autowired로 주입받을 수 있음. 컨테이너에 등록된 빈 이름, 정보 조회 가능

  • 중첩 멤버 클래스를 프로파일 설정 클래스에 포함시키면 @Import 에 추가할 필요 없음

  • 자바의 .properties -> 내부에 키=값 형태로 프로퍼티를 정의

  • 스프링은 빈 설정 작업에 필요한 프로퍼티의 정보를 컨테이너가 관리하고 제공해줌.

  • 프로퍼티 소스 -> 컨테이너가 값을 가져오는 대상

  • @PropertySource("...properties") -> 프로퍼티 소스 등록

  • Environment 를 주입받아 getProperty("키") 을 사용하면
    프로퍼티의 값을 가져올 수 있음

  • @Value("${키}") -> @PropertySource 로 등록된 프로퍼티 소스의 키에 대한 값을 주입받음 (PropertySourcesPlaceholderConfigurer 를 빈으로 등록해야함. 빈으로 등록할때는 꼭 메서드가 static 이어야 함)

  • PropertySourcesPlaceholderConfigurer -> 프로퍼티 소스로부터 가져온 값을 @Value 필드에 주입하는 기능을 제공

  • @Configuration 애노테이션이 달린 빈 설정으로 사용되는 클래스도 빈으로 취급되기 때문에 @Autowired 이용 가능

  • @Configuration 도 @Component 를 메타 애노테이션으로 갖고있음

  • @Import(value=설정클래스) 도 다른 이름의 애노테이션으로 대체 가능
    ex )

@Import(TransactionManagementConfigurationSelector.class)
public @interface EnableTransactionManagement
  • 7장 정리 (7장은 왤케 기냐..)

  • SQL처럼 변경될 수 있는 텍스트로 된 정보는 외부 리소스에 담아두고 가져오게 만들면 편하다.

  • 성격이 다른 코드가 한데 섞여있는 클래스라면 먼저 인터페이스를 정의해서 코드를 각 인터페이스별로 분리하는게 좋다. 다른 인터페이스에 속한 기능은 인터페이스를 통해 접근하게 만들고 간단히 자기참조 빈으로 의존관계를 만들어 검증한다. 검증을 마쳤으면 아예 클래스를 분리해도 좋다.

  • 자주 사용되는 의존 오브젝트는 디폴트로 미리 정의해두면 편리하다.

  • XML과 오브젝트 매핑은 스프링의 OXM 추상화 기능을 활용한다.

  • 특정 의존 오브젝트를 고정시켜 기능을 특화하려면 멤버 클래스로 만드는 것이 편리하다. 기존에 만들어진 기능과 중복되는 부분은 위임을 통해 중복을 제거하는 게 좋다.

  • 외부의 파일이나 리소스를 사용하는 코드에서는 스프링의 리소스 추상화와 리소스 로더를 사용한다.

  • DI를 의식하면서 코드를 작성하면 객체지향 설계에 도움이 된다.

  • DI는 인터페이스를 사용한다. 인터페이스를 사용하면 인터페이스 분리 원칙을 잘 지키는데도 도움이 된다.

  • 클라이언트에 따라서 인터페이스를 분리할 때 새로운 인터페이스를 만드는 방법과 인터페이스를 상속하는 방법 두가지를 사용할 수 있다.

  • 애플리케이션에 내장하는 DB를 사용할 때는 스프링의 내장형 DB 추상화 기능과 전용 태그를 사용하면 편리하다.

profile
아직 배우는 중입니다

0개의 댓글