在 Spring 3 中,无法在静态字段或方法中设置 @Autowired,因此我想声明一个实用程序类,例如:
public class SchoolYearServiceUtil {
private static SchoolYearService schoolYearService;
public static SchoolYear getSchoolYear(Long id) {
return schoolYearService.get(id);
}
}
避免必须在我需要它的任何地方(jsp,命令类...)注入 schoolYearService。在这种情况下,我不需要 SchoolYearServiceUtil 实现的接口。
我不想通过代码初始化对象,而是获得与 Spring 相同的实例。
哪个是将 getSchoolYear 实现为静态方法的最佳选择?
谢谢。
这在概念上会是错误的吗?:
@Component
public class SchoolYearServiceUtil {
private static SchoolYearService schoolYearService;
@Autowired(required = true)
private SchoolYearServiceUtil(@Qualifier("schoolYearServiceImpl") SchoolYearService schoolYearService) {
SchoolYearServiceUtil.schoolYearService = schoolYearService;
}
public static SchoolYearService getSchoolYearService() {
return schoolYearService;
}
public static SchoolYear getSchoolYear(Long id) {
return getSchoolYearService().get(id);
}
}
我必须确保只有 Spring 调用一次构造函数并且构造函数在其他任何地方都没有调用,这就是我将构造函数声明为私有的原因。