返回已创建Bean的方法处的Spring@Bean

返回已创建Bean的方法处的Spring@Bean,spring,javabeans,autowired,Spring,Javabeans,Autowired,我有下面的类StaticDataCacheServerBean,它是由它的接口自动连接的,即 @Autowired private StaticDataCaches staticDataCaches; 在另一个班级 我已经在staticDataCacheServerBean类的init方法中创建了sdcAutoAssignmentRuleCache的实例。根据我的理解,如果使用@Bean注释sdcAutoAssignmentRuleCache不会产生任何影响,因为实例已经创建,并且在调用方

我有下面的类StaticDataCacheServerBean,它是由它的接口自动连接的,即

@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,因此它可以接收回调等。为什么您不能检查“如果……,会发生什么?”