2016-09-21 25 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中,或者独立访问它们。