2016-09-21 2 views
0

중첩 된 클래스에 의해 달성?Spring 트랜잭션 configruation (내부 클래스 대 빈은) 내가 TransactionManager를의 구성을 발견 행동에 책 봄의 예에서

@Configuration 
@EnableTransactionManagement 
public class DbConfig { 

//EntityManagerFactory, JpaVendorAdapter, DataSource @Beans 

    @Bean 
    public JpaTransactionManager createTransactionManager(EntityManagerFactory emf) { 
     JpaTransactionManager jpaTransactionManager = new JpaTransactionManager(); 
     jpaTransactionManager.setEntityManagerFactory(emf); 
     return jpaTransactionManager; 
    } 

} 

과 같은 표준 @Bean 접근 방식과 비교하여 차이가 있습니까?

답변

0

좋은 연습인가요? 표준 @Bean과 비교하여 차이가 있습니까?

이미 알고있는 것처럼 두 방법 모두 작동합니다.

첫 번째 접근법은 inner bean 개념과 유사합니다.

외부 bean을 제외한 다른 bean이 bean을 사용하지 않는다는 것을 안다면 내부 bean으로 선언 할 수 있습니다. 이점은 빈을 내부 빈으로 만들면 외부 빈을 제외한 다른 빈에 노출되지 않으므로 다른 빈에서 내부 빈을 사용/삽입 할 수 없게됩니다. 내부 bean 정의는 정의 된 ID 또는 이름을 필요로하지 않습니다

위의 링크에서 인용

; 지정된 경우, 컨테이너는 이러한 값을 식별자로 사용하지 않습니다. 컨테이너는 생성시 범위 플래그도 무시합니다. 내부 bean은 항상 익명이며 항상 외부 bean으로 작성됩니다. 내부 빈을 내부 빈을 내부 bean을 내부 bean을 내부 bean을 외부 bean으로 삽입하거나 외부 bean에 독립적으로 액세스하는 것은 불가능합니다.