2017-08-26 34 views
0

我可以得到一个bean定义与这行代码:(基于Java的)来初始化方法的确切替代

BeanDefinitionRegistry bdr = (BeanDefinitionRegistry) context.getAutowireCapableBeanFactory(); 
bdr.getBeanDefinition("myBean") 

通用豆:类[com.kciray.play.MyBean];范围=单; abstract = false; lazyInit = FALSE; autowireMode = 0; dependencyCheck = 0; autowireCandidate = true;初级= FALSE; factoryBeanName = NULL; factoryMethodName = null; initMethodName = null; destroyMethodName = NULL

initMethodName为空,当我使用任一@PostConstructInitializingBean.afterPropertiesSet。所以,这些不是XML配置的准确选择(init-method =“some”)。

我想知道原因后面这个小小的不一致。为了学习,在Java中设置init方法的方法。

回答

1

为什么要设置init方法的名称?这似乎不切实际,因为它在幕后完成。但是,您可以同时使用多种init方法,并且在official documentation中有一个定义的顺序。

在XML配置,你可以设置init方法,因此Spring容器会在定义beans或特定bean标签这样的方法,但不必要的夫妻代码框架,使之少一些可读性。 显式优于隐式

JSR-250 @PostConstruct和@PreDestroy注释通常被认为是在现代Spring应用程序中接收生命周期回调的最佳实践。使用这些注释意味着你的bean没有耦合到Spring特定的接口。详情请参阅Section 7.9.8, “@PostConstruct and @PreDestroy“。

相关问题