1. Bean 등록 메타정보 구성 전략

  1) XML단독 사용

    - 모든 Bean을 명시적으로 XML에 등록하는 방법

    - 생성되는 모든 Bean을 XML에서 확인 가능하지만 갯수가 많아지면 관리 어려움

    - 설정 파일을 동시에 공유시 충돌 문제 발생

    - setter 메서드 또는 Constructor가 코드내에 반드시 존재

    - 운영 중에 사용하기에 용이함

   2) XML과 빈 스캐닝(Bean Scanning)의 혼용

    - Bean으로 사용될 클래스에 특별한 어노테이션(Annotation)을 부여해주면 이런 클래스를 자동으로 찾아서 Bean으로 등록

    - XML 문서 생성과 관리에 따른 수고를 덜어주어 개발 속도 향상 가능

    - Bean들 간의 의존관계가 어떻게 되는지 한 눈에 파악하기 힘들고 관리가 힘들수 있음

    - 개발환경에 적합한 방식

 

2. Bean 관련 Annotation

  1) Bean 등록 Annnotation

     - @Component : 컴포넌트를 나타내는 일반적이 스테레오 타입으로 <bean>의 태그와 동일 역할

     - @Repository : 퍼시스턴스(persistence) 레이어, 영속성을 가지는 속성(파일, 데이터베이스)을 가진 클래스

     - @Service : 서비스 레이어, 비지니스 로직을 가진 클래스

     - @Controller : 프리젠테이션 레이어, 웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스(보통 Restful API에서 첫 호출되는 URL 매핑클래스)

   2) Bean 의존 관계를 주입 Annnotation

     - @Autowired : 정밀한 의존관계 주입시 사용되며 프로퍼티, setter메서드, 생성자, 일반 메서드 사용 가능. 의존하는 객체를 주입할 때 주로 Type을 이용

     - @Resource : 자원을 자동 연결할 때 사용하며 프로퍼티, setter 메서드에 적용 가능. 의존하는 객체를 주입할 때 주로 Name을 이용

     - @Value : 단순한 값을 주입할 때 주로 사용. @Value("Spring")은 <property... value="Spring"/> 와 동일

     - @Qualifier : @Autowired 어노테이션과 같이 사용. 동일한 타입이 여러개가 존재할 때 특정 Bean을 찾기 위해 @Qualifier을 같이 사용

    3) Component Scan 태그

      - @Component를 통해 자동으로 Bean을 등록하고, @Autowired로 의존관계를 주입받는 어노테이션을 클래스에서 선언하여 사용했을 경우에는 해당 클래스가 위치한 특정 패키지를 Scan하기 위한 설정을 XML에 해주어야 함

      - <context:include-filter> : 자동 스캔 대상에 포함

      - <context:exclude-filter> : 자동 스캔 대상에서 제외

 

3. 프로퍼티(Property) 파일을 이용한 설정 방법

+ Recent posts