|
Autowired над конструктором
|
|||
---|---|---|---|
#18+
Добрый день. Недавно прочитал на хабре, что внедрение зависимостей через поле -это не очень хорошо. И решил попробовать через конструктор (раз уж настоятельно советуют) И столкнулся с вопросом: а где собственно прописыва-то @Autowired? Вот тут [1] Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Или вот тут [2]: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Config, если что, помечен, как @Component ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 17:02 |
|
Autowired над конструктором
|
|||
---|---|---|---|
#18+
Так, не тот класс) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 17:11 |
|
Autowired над конструктором
|
|||
---|---|---|---|
#18+
в статье скорее всего имелся в виду второй вариант - внедрение зависимостей в объект. в первом же примере у тебя конфигурация для dependency injection - т.е. это ява-аналог xml-файлов спринга. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 17:21 |
|
Autowired над конструктором
|
|||
---|---|---|---|
#18+
chpasha, то есть я правильно понимаю, что внедрять через конструктор имеет смысл, например, вот в таком классе: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
Или неправильно мысль понял? И как в приведенном изначально примере все же внедрить зависимости? Чувствую, что, честно говоря, подзапутался Статья , кстати ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 17:46 |
|
Autowired над конструктором
|
|||
---|---|---|---|
#18+
Timeinто есть я правильно понимаю правильно. по-крайней мере архитектурно TimeinИ как в приведенном изначально примере все же внедрить зависимости? там много вариантов если config определен в другом месте или для его создания не нужно никаких особых телодвижений, то например так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
если config определен тут же то так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Ява-конфигурация для spring это не совсем обычный класс, по-этому не все методы правильного проектирования стоит применять к нему слишком рьяно (кроме очевидных типа do not repeat yourself и т.п.). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 19:46 |
|
Autowired над конструктором
|
|||
---|---|---|---|
#18+
P. S. так кстати тоже работает, так что можно более компактно записать, особенно если объект нужен только в одном месте Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 19:59 |
|
Autowired над конструктором
|
|||
---|---|---|---|
#18+
chpashaTimeinто есть я правильно понимаю правильно. по-крайней мере архитектурно Ява-конфигурация для spring это не совсем обычный класс, по-этому не все методы правильного проектирования стоит применять к нему слишком рьяно (кроме очевидных типа do not repeat yourself и т.п.). яваконфиг спринга это точно такой же бин как и другие бины с той лишь разницей, что он всегда синглтон и запускается первым по списку, делая что-то этакое прежде чем "загрузятся" те бины что в этом бине описаны. а вот насчет автоваера в конструкторе вот тут не совсем лично мне ясен смысл такого автоваера, ну кроме пространных заявлений что они архитектурно "правильнее" чем как поля. это не к вам лично претензия. это просто везде сказано так. где то видел объяснение типа "оно потокобезопаснее". хотя что там опасного в полях не совсем ясно далее, лично для меня в кострукторах некрасиво то что если у тебя скажем, внутри твоего бина подвязаны еще 2-3-4-5 бинов, то твой конструктор будет выглядеть как колбаса. и будет весь код в таких вот колбасках. в клинкоде чел очень нервно относился к методам где больше ОДНОГО параметра, типа 2 это окей 3 это трэш на грани безумия, 4 - это форменное безумство. я канеш понимаю, что, скажем, слишком много инжектов в один бин это плохо, но один инжект в один бин это чот совсем мало. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 23:47 |
|
Autowired над конструктором
|
|||
---|---|---|---|
#18+
если конструктор в классе один, то над ним можно не писать @Autowired ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 13:25 |
|
Autowired над конструктором
|
|||
---|---|---|---|
#18+
andreykaTяваконфиг спринга это точно такой же бин не согласен. имхо яваконфиг - это в первую очередь конфиг, т.е. DSL для инициализации контейнера. Применимы ли все правила написания ява-бинов к конфигу на groovy или xml? И если нет, то почему они должны быть применимы к ява-конфигу? andreykaTа вот насчет автоваера в конструкторе вот тут не совсем лично мне ясен смысл такого автоваера, ну кроме пространных заявлений что они архитектурно "правильнее" чем как поля если я правильно понял посыл статьи (но я признаться по диагонали просмотрел) там критикуется инъекция на поле, как ограничивающая использование бина без DI andreykaTесли у тебя скажем, внутри твоего бина подвязаны еще 2-3-4-5 бинов автор статьи утверждает, что если у нас много бинов, то что-то не так в консерватории и возможно класс делает слишком много всего ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 15:38 |
|
Autowired над конструктором
|
|||
---|---|---|---|
#18+
chpashaandreykaTесли у тебя скажем, внутри твоего бина подвязаны еще 2-3-4-5 бинов автор статьи утверждает, что если у нас много бинов, то что-то не так в консерватории и возможно класс делает слишком много всего и согласен и не согласен. возможно. да. бывает. в том же клинкоде как я чуть выше сказал, напсано, что больше одного параметра передавать это уже не очень.. и типа давай городи буилдер и передавай объект.. но даже в джавовских либах искаропки дофига таких и методов и конструкторов куда ты передаешь целую колбасу значений. насчет простыней инжекта тоже согласен. но не согласен с утверждением что не больше одного-двух. 1-2 это идеал. но не всегда бывает именно так. я (не утверждаю что это бестпрактиз) видал и легаси классы где инжектов было с десяток. как там будет выглядеть конструктор? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 18:26 |
|
Autowired над конструктором
|
|||
---|---|---|---|
#18+
andreykaTно даже в джавовских либах искаропки никто не безгрешен andreykaTвидал и легаси классы где инжектов было с десяток. как там будет выглядеть конструктор?вот там скорее всего широкое поле для рефакторинга ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 21:00 |
|
|
start [/forum/topic.php?fid=59&fpage=39&tid=2121742]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
88ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 180ms |
0 / 0 |