ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 토비의 스프링 3.1 - 자바 코드를 이용한 빈 설정
    Spring 2017. 8. 5. 12:19



    토비의 스프링 3.1의 내용을 요약한 자료입니다. 개념적인 설명만 요약하였으며 개념의 이해를 돕는 구체적인 코드 및 예제를 살펴보시려면 책을 참조하시기 바랍니다. 

    포스팅한 내용이 저작권의 문제가 발생할 수 있는 경우 게시물은 삭제/비공개 처리 될 수 있습니다.


    자바 코드를 이용한 빈 설정


    - XML을 애노테이션과 자바 코드로 대체할수 있다. XML은 자바 코드로 만든 오브젝트 팩토리 기능을 프레임워크의 도움을 받아 간략한 방식으로 표현한 것이다.

    - XML대신 사용할 클래스에 @Configuration 애노테이션을 붙여준다. 

    - DI를 위해 클래스를 사용하면서 동시에 XML DI 정보를 가져오기 위해서는 @ImportResource 애노테이션을 이용한다.

    - <bean>은 @Bean이 붙은 public 메소드로 만들어주면 된다. 메소드의 이름은 id 값으로 하고 메소드의 리턴 값 타입은 신중하게 결정해야 한다.

    - 빈을 주입받아 사용하는 다른 빈이 어떤 타입으로 이 빈의 존재를 알고 있는지 확인할 필요가 있다.

    - 빈의 구현 클래스에 맞는 프로퍼티 값 주입으로 new 키워드를 사용해 빈 인스턴스를 만들고 필요한 프로퍼티 값(Driver 정보, UseID 등등.)을 넣어주도록 수정자 메소드를 호출하는 코드를 추가하고 생성된 빈 오브젝트를 리턴해주면된다.

    - <bean> 에 넣는 클래스는 public 아니여도 된다. 내부적으로 리플렉션 API를 이용하기 때문에 private으로 접근을 제한해도 빈의 클래스로 사용할 수 있다. 반면 직접 자바 코드에서 참조하는 경우 패키지가 다르면 public 으로 접근 제한자를 바꿔야 한다.

    - XML과 자바 클래스가 동시에 DI정보로 사용하는 경우 자바 코드로 정의한 dataSource 빈은 XML에서 <property>를 이용해 참조할 수 있다.

    - XML에 정의된 빈은 클래스에 @Autowired가 붙은 필드를 선언해서 XML에 정의된 빈을 컨테이너가 주입해주게 해야 한다. @Autowired가 붙은 필드의 타입과 같은 빈이 있으면 해당 빈을 필드에 자동으로 넣어준다. 

    - @Resource 애노테이션은 @Autowired와 유사하게 필드에 빈을 주입받을 때 사용한다. 차이는 @Autowired는 필드 타입을 기준으로 빈을 찾고  @Resource 는 필드 이름을 기준으로 빈을 찾는다.



    전용 태그 전환


    - 트랜잭션을 위한 <tx:annotation-driven /> 태그는 @EnableTransactionManagement 애노테이션을 TestApplicationContext에 붙여주는 것으로 간단히 변환할 수 있다.

    - 스프링 3.1은 @Enable로 시작하는 애노테이션으로 대체할 수 있게 다양한 애노테이션을 제공한다. 대표적인 예가 @EnableTransactionManagement 이다.


Designed by Tistory.