返回已创建Bean的方法处的Spring@Bean
我有下面的类StaticDataCacheServerBean,它是由它的接口自动连接的,即返回已创建Bean的方法处的Spring@Bean,spring,javabeans,autowired,Spring,Javabeans,Autowired,我有下面的类StaticDataCacheServerBean,它是由它的接口自动连接的,即 @Autowired private StaticDataCaches staticDataCaches; 在另一个班级 我已经在staticDataCacheServerBean类的init方法中创建了sdcAutoAssignmentRuleCache的实例。根据我的理解,如果使用@Bean注释sdcAutoAssignmentRuleCache不会产生任何影响,因为实例已经创建,并且在调用方
@Autowired
private StaticDataCaches staticDataCaches;
在另一个班级
我已经在staticDataCacheServerBean
类的init方法中创建了sdcAutoAssignmentRuleCache
的实例。根据我的理解,如果使用@Bean
注释sdcAutoAssignmentRuleCache
不会产生任何影响,因为实例已经创建,并且在调用方法时返回相同的结果。
我的理解正确吗
如果我不使用@Bean
注释sdcAutoAssignmentRuleCache()
方法,会发生什么?如果我使用@Bean
注释,会发生什么
@Configuration
public class StaticDataCachesServerBean implements StaticDataCaches {
@Autowired
private CerebrumApplication cerebrumApplication;
private SdcUserCache sdcUserCache;
private SdcAutoAssignmentRuleCache sdcAutoAssignmentRuleCache;
@Override
public void init() {
sdcUserCache = new SdcUserCacheImpl(
new CacheUserProviderImpl(cerebrumApplication.getCacheProvider()));
sdcAutoAssignmentRuleCache= new SdcAutoAssignmentRuleCacheImpl(
new CacheSdcAutoAssignmentRuleProviderImpl(cerebrumApplication.getCacheProvider()));
}
@Bean
@Override
public SdcAutoAssignmentRuleCache sdcAutoAssignmentRuleCache() {
return sdcAutoAssignmentRuleCache;
}
}
@Bean
可能返回null
,因为不能保证在调用@Bean
之前调用了init
方法。添加@Bean
使其成为一个spring管理的Bean,因此它可以接收回调等。为什么您不能检查“如果……,会发生什么?”