Spring bean @Component未在应用程序启动时进行初始化和注入,但稍后会被注入

时间:2015-10-06 07:50:47

标签: spring spring-mvc autowired spring-bean

我的课程如下:

@Component
public class ServerFacade {
@Autowired
private ApplicationContext applicationContext;

private static RegisteredCacheService registeredCacheService;

@PostConstruct
public void init()
{
  registeredCacheService=
               applicationContext.getBean(RegisteredCacheService.class);
}

public static void doRegister()
{
  registeredCacheService.callRegistrationService();

}
}

我在

下面有RegisteredCacheService类
@Component
class RegisteredCacheService 
{
   public void callRegistrationService()
   {
     //some business logic
    }
}

问题: 当我的应用程序出现时,我调用了ServerDFacade类的doRegister(),它确实有效,但是在这个方法中,它试图调用 registeredCacheService.callRegistrationService();,但奇怪的是,我看到registeredCacheService为NULL,现在,一旦应用程序出现,然后再次调用doRegister(),这次registeredCacheService是NOT NULL,它工作正常。我想知道解决这个问题的原因。

我尝试了一件也没有帮助的事情。我更改了代码:

@Autowired
private ApplicationContext applicationContext;

@Autowired
private RegisteredCacheService registeredCacheService;

删除@PostConstruct并将静态方法更改为非静态方法。在这种情况下,即使应用程序完全启动,registeredCacheService也始终为NULL。

0 个答案:

没有答案