powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Сервлеты и Dependency Injection
8 сообщений из 8, страница 1 из 1
Сервлеты и Dependency Injection
    #38533851
output
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Подскажите пожалуйста
Имеется слой доступа к базе данных и слой сервисов. Не могу понять как в сервлет в сеттер установить имплементацию того или иного сервиса, подскажите пожалуйста. (только спринги и т.д. не предлагать :) )


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class TestServlet extends HttpServlet {
    private TestService testService;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // ....
    }

    public void setTestService(TestServlet testService) {
        this.testService = testService;
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public interface TestService {
    void test();
}

public class TestServiceImpl impliments TestService {
    @Override
    public void test() {
             //....
    }
}



и есть что-то типа фабрики, так же не знаю насколько этот момент верный, подскажите если делаю не так.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class ServiceFactory {
    private TestService testService;

    public TestService getTestService() {
        if (testService == null) {
            TestServiceImpl testService = new TestServiceImpl();
            testService.setOthetTestService(getOtherTestService());
            this.testService = testService;
        }
        return userService;
    }
}





Вообщем идея понять что такое dependency injection, а так же сервлеты (поэтому просьба без всяких фрейморков). Заранее благодарю.
...
Рейтинг: 0 / 0
Сервлеты и Dependency Injection
    #38533865
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
output,

у вас в первом исходнике точно setTestService(TestServlet testService)? Может setTestService(TestService testService) ?

идея DI в том, чтобы кто-то задавал значения всех нужных полей у обьектов. Профит от этого в том, что если нужны какие-то циклические зависимости, то при создании руками ссылки не всегда просто "протащить" от места где оно создается в место, где оно тоже нужно.

Спринг - рабочая, но довольно монстроидальная либа, с непонятными стактрейсами в случае ошибок. ИМХО. Я делал приложеньице и накатал свою имплементацию. И формат попроще и вся логика - один класс, вместо нескольких jar-ов по мегабайту.
...
Рейтинг: 0 / 0
Сервлеты и Dependency Injection
    #38533905
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokПрофит от этого в том, что если нужны какие-то циклические зависимости, то при создании руками ссылки не всегда просто "протащить" от места где оно создается в место, где оно тоже нужно.Профит DI заключается совершенно не в этом. Любую зависимость всегда можно протащить "руками" куда угодно. Если бы это было невозможно, то как по-вашему тогда бы это делал спринг?
Смысл DI - упростить работу с зависимостями, их поддержку, и тестируемость.

chabapokСпринг - рабочая, но довольно монстроидальная либа, с непонятными стактрейсами в случае ошибок. ИМХО. Я делал приложеньице и накатал свою имплементацию. И формат попроще и вся логика - один класс, вместо нескольких jar-ов по мегабайту.Спринг - достаточно легкая либа. Среди всех библиотек, у Спринга одни из самых понятных сообщений об ошибках. Они всегда четко объясняют причину той или иной проблемы.
...
Рейтинг: 0 / 0
Сервлеты и Dependency Injection
    #38533906
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
output ,
Вариантов несколько:
1) Создать сервис в момент создания сервлета, то есть в init().
2) Создать сервис в момент создания контекста, то есть в ServletContextListener, и запихнуть его в ServletContext.setAttribute(). Далее вытаскиваеть его из ServletRequest.getServletContext.getAttribute().
...
Рейтинг: 0 / 0
Сервлеты и Dependency Injection
    #38533946
output
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokoutput,
у вас в первом исходнике точно setTestService(TestServlet testService)? Может setTestService(TestService testService) ?

Да, точно, опечатался.
chabapokЯ делал приложеньице и накатал свою имплементацию. И формат попроще и вся логика - один класс, вместо нескольких jar-ов по мегабайту.

А можно посмотреть на исходники Вашего приложения?

cdtyjvoutput,
Вариантов несколько:
1) Создать сервис в момент создания сервлета, то есть в init().
2) Создать сервис в момент создания контекста, то есть в ServletContextListener, и запихнуть его в ServletContext.setAttribute(). Далее вытаскиваеть его из ServletRequest.getServletContext.getAttribute().


Благодарю, у меня был вариант получать сервисы из сервлет контекста, но думал что так не верно.
...
Рейтинг: 0 / 0
Сервлеты и Dependency Injection
    #38535090
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvchabapokПрофит от этого в том, что если нужны какие-то циклические зависимости, то при создании руками ссылки не всегда просто "протащить" от места где оно создается в место, где оно тоже нужно.Профит DI заключается совершенно не в этом. Любую зависимость всегда можно протащить "руками" куда угодно. Если бы это было невозможно, то как по-вашему тогда бы это делал спринг?
Смысл DI - упростить работу с зависимостями, их поддержку, и тестируемость.


Давайте сравним мое "не всегда просто" и "всегда можно протащить".
Вроде эти утверждения даже не конфликтуют.
Т.е. да, всегда можно протащить, но писанины много. Будет в итоге что-типа:

myobj = other.obj.left.get(10).get(5).right.obj.getObj().getObject().get(8)

при этом само other тоже может доставаться из большой жопы.

outputА можно посмотреть на исходники Вашего приложения?
К сожалению, оно закрытое, и хотя военного в нем нет ничего, оно из серии "если вы это увидите, вас прийдется убить".

Просто спринг более гибок, но конфиг это раздувает. По моему мнению, для многих задач это избыточно. Достаточно через рефлекию мэппить из xml аттрибуты в переменные. Опять же, через рефлексию смотрится тип переменной и по нему решается как стринговый аттрибут приводить к этому типу.
...
Рейтинг: 0 / 0
Сервлеты и Dependency Injection
    #38535101
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapok
Просто спринг более гибок, но конфиг это раздувает. По моему мнению, для многих задач это избыточно. Достаточно через рефлекию мэппить из xml аттрибуты в переменные. Опять же, через рефлексию смотрится тип переменной и по нему решается как стринговый аттрибут приводить к этому типу.

А Guice чем не устроил?
...
Рейтинг: 0 / 0
Сервлеты и Dependency Injection
    #38535772
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да как-то не приглянулась документация. Хотя конечно можно было скачать попробовать.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Сервлеты и Dependency Injection
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]