我在我的Java项目中使用Spring框架。当我启动模块时,有时spring bean没有被正确初始化,bean将为null,程序将有异常(Null Pointer Exception)。有没有办法确保在启动期间所有bean都已正确初始化?
答案 0 :(得分:1)
春天有一个@Required注释。这将确保在初始化bean之前存在依赖关系。如果依赖项不存在,它将在初始化bean之前抛出错误。在您的代码中使用它,然后重试。如果您仍然遇到问题,请在此处发布您的代码。
答案 1 :(得分:1)
既然你可以混合基于构造函数和基于setter的DI,那就很好了 经验法则使用构造函数来强制依赖和 setter方法或可选依赖项的配置方法。 请注意,在setter方法上使用@Required注释可以 用于使属性成为必需的依赖项。
Spring团队一般都主张构造函数注入 使一个人能够将应用程序组件实现为不可变对象 并确保所需的依赖项不为null。此外 构造函数注入的组件总是返回给客户端 (调用)处于完全初始化状态的代码。作为旁注,大 构造函数参数的数量是一个糟糕的代码气味,暗示着 班级可能有太多的责任,应该重构 更好地解决问题的正确分离。
这样,如果你的bean是不可变对象,那么只需使用基于构造函数的DI。如果它们不是不可变的,那么你可以组合基于构造函数和基于setter的DI,或者使用@Required注释。