У меня есть устаревшее приложение, использующее одноэлементный шаблон для всех служб и доступ ко всем сервисам через ServiceName.getInstance() внутри служб, которые используют другие службы и в веб-уровне. Я конвертирую проект для использования Spring и думал о создании одноуровневого служебного класса ServiceProvider с методами getServiceA, getServiceB..etc и получить его из контекста приложения Spring. Я буду использовать ServiceProvider в веб-уровне только потому, что я не могу конвертировать его, чтобы использовать Spring только и автоуверять все службы, которые используют другие службы. Это хорошее решение?Spring Framework Abstraction
У меня очень простой веб-уровень, и, возможно, кто-то может порекомендовать как его сменить с минимальными изменениями. У меня есть карта url для контроллеров, загруженных при запуске. RequestDispatcher анализирует URL-адрес запроса, просматривает контроллер по классу и выполняет метод шаблона (существуют различные подклассы базового контроллера, но это не усложняет проблему).
RequestDispatcher:
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
int slashIndex = req.getRequestURL().lastIndexOf("/");
String path = req.getRequestURL().substring(slashIndex, req.getRequestURL().length());
ServiceURL url = urlMap.get(path);
ServiceProvider.getLog().info("Requested page: " + path);
if (url != null) {
try {
Utils.authenticate(req, resp);
grantAccess(req, url);
BaseServlet servlet = (BaseServlet)url.getClass().getClassLoader().loadClass(url.getClassName()).newInstance();
servlet.service(req, resp);
}
catch (AuthorizationException e) {
resp.getWriter().write(new ErrorModel("You are not authorized to perform the requested action.").getContent());
ServiceProvider.getAuthLog().info("auth", e);
}catch (SystemException e) {
Я думаю аннотирование моих сервлетов в качестве компонентов, имея пакеты автоматического сканирования. Может ли ApplicationContext получить компонент по имени полного класса?
Почему, на ваш взгляд, это хорошее решение или нет? – NINCOMPOOP
Каковы альтернативы? – user979051