2016-09-21 54 views
0

在從書春的例子在行動中,我發現事務管理的該配置是通過嵌套類實現?是否有比較像標準@Bean方法有什麼區別:Spring事務configruation(豆VS內部類)

@Configuration 
@EnableTransactionManagement 
public class DbConfig { 

//EntityManagerFactory, JpaVendorAdapter, DataSource @Beans 

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

} 

或者它僅僅是關於分離的責任呢?

回答

0

這是一個很好的做法或什麼?是否有與標準相比有任何區別@Bean

這兩種方法的工作原理您可能已經注意到了。

第一種方法類似於inner bean概念。

如果您知道該bean不會被除了外部bean以外的任何其他bean使用,那麼您可以將它聲明爲一個內部bean。這裏的優點是,通過將bean作爲內部bean,確保它不會暴露給除外部bean之外的其他bean,因此將無法在其他bean中使用/注入內部bean。

從上述鏈接

的內bean定義不需要定義的ID或名稱引用;如果指定,容器不使用這樣的值作爲標識符。容器在創建時也會忽略範圍標誌:內部bean始終是匿名的,並且它們始終使用外部bean創建。不可能將內部bean注入到除了封裝bean之外的協作bean中,或者獨立訪問它們。