我的课程如下:
@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。