
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
22.01.2014, 01:31
|
|||
|---|---|---|---|
Сервлеты и Dependency Injection |
|||
|
#18+
Добрый день. Подскажите пожалуйста Имеется слой доступа к базе данных и слой сервисов. Не могу понять как в сервлет в сеттер установить имплементацию того или иного сервиса, подскажите пожалуйста. (только спринги и т.д. не предлагать :) ) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. и есть что-то типа фабрики, так же не знаю насколько этот момент верный, подскажите если делаю не так. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Вообщем идея понять что такое dependency injection, а так же сервлеты (поэтому просьба без всяких фрейморков). Заранее благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.01.2014, 02:46
|
|||
|---|---|---|---|
Сервлеты и Dependency Injection |
|||
|
#18+
output, у вас в первом исходнике точно setTestService(TestServlet testService)? Может setTestService(TestService testService) ? идея DI в том, чтобы кто-то задавал значения всех нужных полей у обьектов. Профит от этого в том, что если нужны какие-то циклические зависимости, то при создании руками ссылки не всегда просто "протащить" от места где оно создается в место, где оно тоже нужно. Спринг - рабочая, но довольно монстроидальная либа, с непонятными стактрейсами в случае ошибок. ИМХО. Я делал приложеньице и накатал свою имплементацию. И формат попроще и вся логика - один класс, вместо нескольких jar-ов по мегабайту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.01.2014, 08:50
|
|||
|---|---|---|---|
Сервлеты и Dependency Injection |
|||
|
#18+
chabapokПрофит от этого в том, что если нужны какие-то циклические зависимости, то при создании руками ссылки не всегда просто "протащить" от места где оно создается в место, где оно тоже нужно.Профит DI заключается совершенно не в этом. Любую зависимость всегда можно протащить "руками" куда угодно. Если бы это было невозможно, то как по-вашему тогда бы это делал спринг? Смысл DI - упростить работу с зависимостями, их поддержку, и тестируемость. chabapokСпринг - рабочая, но довольно монстроидальная либа, с непонятными стактрейсами в случае ошибок. ИМХО. Я делал приложеньице и накатал свою имплементацию. И формат попроще и вся логика - один класс, вместо нескольких jar-ов по мегабайту.Спринг - достаточно легкая либа. Среди всех библиотек, у Спринга одни из самых понятных сообщений об ошибках. Они всегда четко объясняют причину той или иной проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.01.2014, 08:53
|
|||
|---|---|---|---|
Сервлеты и Dependency Injection |
|||
|
#18+
output , Вариантов несколько: 1) Создать сервис в момент создания сервлета, то есть в init(). 2) Создать сервис в момент создания контекста, то есть в ServletContextListener, и запихнуть его в ServletContext.setAttribute(). Далее вытаскиваеть его из ServletRequest.getServletContext.getAttribute(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.01.2014, 09:54
|
|||
|---|---|---|---|
Сервлеты и Dependency Injection |
|||
|
#18+
chabapokoutput, у вас в первом исходнике точно setTestService(TestServlet testService)? Может setTestService(TestService testService) ? Да, точно, опечатался. chabapokЯ делал приложеньице и накатал свою имплементацию. И формат попроще и вся логика - один класс, вместо нескольких jar-ов по мегабайту. А можно посмотреть на исходники Вашего приложения? cdtyjvoutput, Вариантов несколько: 1) Создать сервис в момент создания сервлета, то есть в init(). 2) Создать сервис в момент создания контекста, то есть в ServletContextListener, и запихнуть его в ServletContext.setAttribute(). Далее вытаскиваеть его из ServletRequest.getServletContext.getAttribute(). Благодарю, у меня был вариант получать сервисы из сервлет контекста, но думал что так не верно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.01.2014, 02:46
|
|||
|---|---|---|---|
Сервлеты и Dependency Injection |
|||
|
#18+
cdtyjvchabapokПрофит от этого в том, что если нужны какие-то циклические зависимости, то при создании руками ссылки не всегда просто "протащить" от места где оно создается в место, где оно тоже нужно.Профит DI заключается совершенно не в этом. Любую зависимость всегда можно протащить "руками" куда угодно. Если бы это было невозможно, то как по-вашему тогда бы это делал спринг? Смысл DI - упростить работу с зависимостями, их поддержку, и тестируемость. Давайте сравним мое "не всегда просто" и "всегда можно протащить". Вроде эти утверждения даже не конфликтуют. Т.е. да, всегда можно протащить, но писанины много. Будет в итоге что-типа: myobj = other.obj.left.get(10).get(5).right.obj.getObj().getObject().get(8) при этом само other тоже может доставаться из большой жопы. outputА можно посмотреть на исходники Вашего приложения? К сожалению, оно закрытое, и хотя военного в нем нет ничего, оно из серии "если вы это увидите, вас прийдется убить". Просто спринг более гибок, но конфиг это раздувает. По моему мнению, для многих задач это избыточно. Достаточно через рефлекию мэппить из xml аттрибуты в переменные. Опять же, через рефлексию смотрится тип переменной и по нему решается как стринговый аттрибут приводить к этому типу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.01.2014, 03:51
|
|||
|---|---|---|---|
Сервлеты и Dependency Injection |
|||
|
#18+
chabapok Просто спринг более гибок, но конфиг это раздувает. По моему мнению, для многих задач это избыточно. Достаточно через рефлекию мэппить из xml аттрибуты в переменные. Опять же, через рефлексию смотрится тип переменной и по нему решается как стринговый аттрибут приводить к этому типу. А Guice чем не устроил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2127773]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 466ms |

| 0 / 0 |
