В Spring 3 невозможно установить @Autowired в статических полях или методах, поэтому я хочу объявить служебный класс, такой как:
public class SchoolYearServiceUtil {
private static SchoolYearService schoolYearService;
public static SchoolYear getSchoolYear(Long id) {
return schoolYearService.get(id);
}
}
, чтобы избежать необходимости везде внедрять schoolYearService.(JSP, командный класс ...), в котором мне это нужно.В этом случае мне не нужен интерфейс, который будет реализован 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 вызывает один раз, когда конструктор и конструктор не называются нигде больше, поэтому я объявил конструктор как приватный.