Size: a a a

Spring Framework and more

2018 December 24

m

maksim gavrilov. in Spring Framework and more
Plomipu Dmitri
Здравствуйте Павел и остальные разработчики. Хорошая новость в том, что бин сервиса создаётся в приложении, а когда я его значение пытаюсь извлечь в тесте с помощью @Autowired, то он мне генерит ошибку такую:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.spring.learning.core.ioc.chapter1.BookManagerService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

Я знаю, что бин не создаётся, но как мне тестировать сервис, если он в спринговском контексте тестового класса не обнаружен, когда я сервис пытался @Autowired применить к сервису ??
скорее всего неправильная конфигурация для теста.

для тестов тоже надо конфигурить бины, которые хочешь покрыть тестами.
источник

m

maksim gavrilov. in Spring Framework and more
Dmitry
Подскажите в чем принципиальная разница между инжектом поля и в сеттер /конструктор?
источник

D

Dmitry in Spring Framework and more
спасибо , почитаю
источник

IS

Ivan SPb in Spring Framework and more
Dmitry
Подскажите в чем принципиальная разница между инжектом поля и в сеттер /конструктор?
источник

D

Dmitry in Spring Framework and more
на русском лучше, спасибо парни
источник

D

Dmitry in Spring Framework and more
вот же черт. а я всегда делал через филды
источник

ON

Oleg Nyrkov in Spring Framework and more
ну понимаем что контекст не поднимется если зависимости цикличны
источник

ON

Oleg Nyrkov in Spring Framework and more
да конструктор на танк становится похож, если зависимостей чтук 5
источник

D

Dmitry in Spring Framework and more
цикличны - в случае если через  филды ?
источник

D

Dmitry in Spring Framework and more
я вообще раньше умал что через сеттеры - это для того чтобы можно было бины использовать в тестировании
источник

ЕБ

Евгений Боровов in Spring Framework and more
для тестирования можно филды откоыть на уровне пакета :)
источник

D

Dmitry in Spring Framework and more
парни мне кажеца вы тооже всегда юзаете филды ))
источник

D

Dmitry in Spring Framework and more
или нет ? есть кто реально пнимает разницу ?
источник

D

Dmitry in Spring Framework and more
статей то я много прочитал честно говоря.
источник

S

Sergey 🖋 in Spring Framework and more
Никогда не использовал
источник

S

Sergey 🖋 in Spring Framework and more
Всегда только конструктор
источник

S

Sergey 🖋 in Spring Framework and more
Реально понимаю разницу, что тесты ты не напишешь нормально, без поднятия контекста
источник

PB

Pavel Bukhmatov in Spring Framework and more
Dmitry
или нет ? есть кто реально пнимает разницу ?
Я через конструктор использую. Тут все дело в вере в "хорошие практики", которые часто притянуты за уши и субъективны.
Практики такие
1. Независимость от DI фреймворка при использовании конструктора (хотя нельзя отказаться от DI Спринга и не отказаться от всего остального Спринга, так что сомнительное преимущество)
2. Обнаружение циклических зависимостей возможно только при исп. конструктора. Циклические зависимом - звоночек на тему того, что обязанности классов распределены как-то неверно
3. По private final сразу видно что зависимость обязательна. Не нужно прыгать с заданием разного уровня видимости (типо package-private для тестирования в том же пакете)
4. С конструктором маленькие методы внутри сервисов можно тестировать без контекста (редко надо, но иногда всё-таки бывает)
5. По конструктору с 3+ параметрами видно, что возможно у класса слишком много зависимостей/обязанностей.

В общем никакой киллер-фич у DI через конструктор нет, но есть много маленьких мелочей
источник

D

Dmitry in Spring Framework and more
спасибо Павел
источник

D

Dmitry in Spring Framework and more
а если филды, то при старте контейнера , зависимости же все равно
источник