Size: a a a

Spring Framework and more

2018 December 23

PD

Plomipu Dmitri in Spring Framework and more
просто я пишу сервис первый раз и не совсем понятно как должны выглядеть его поля.
источник

PB

Pavel Bukhmatov in Spring Framework and more
Plomipu Dmitri
А инжектить какой аннотацией ??
Никакой. Если спринг находит component, у которого есть публичный конструктор, аргументом которого является другой component - спринг сам создаст и подставит инстанс одного в другой
источник

PB

Pavel Bukhmatov in Spring Framework and more
Plomipu Dmitri
А инжектить какой аннотацией ??
https://pastebin.com/ZJPkB5EP
Как пример. Так заинжектит
источник

PD

Plomipu Dmitri in Spring Framework and more
мне вообще-то сначала бы просто протестировать сервис в юнит тесте чтобы видеть, что его методы работают правильно. Эта аннотация @RequiredArgsConstructor как я понял есть в lombok либе. Т.е. мне придётся её ставить ?? И обязательно помечать сервис как @component, если я хочу обойтись без иньекции вручную ?
источник

PB

Pavel Bukhmatov in Spring Framework and more
Plomipu Dmitri
мне вообще-то сначала бы просто протестировать сервис в юнит тесте чтобы видеть, что его методы работают правильно. Эта аннотация @RequiredArgsConstructor как я понял есть в lombok либе. Т.е. мне придётся её ставить ?? И обязательно помечать сервис как @component, если я хочу обойтись без иньекции вручную ?
По поводу ломбока - нет, это просто удобно. Можно самому написать конструктор.
Service, Controller и Repository и так являются Component. С точки зрения инъекции, они все работают.
источник

PB

Pavel Bukhmatov in Spring Framework and more
Это не "без инъекции". Это такая же инъекция, только через параметр конструктора
источник

PB

Pavel Bukhmatov in Spring Framework and more
Ну а тестировать и так никто не мешает. Правда как минимум junit4 хочет чтобы у класса с тестами не было конструктора с аргументами, так что приходится все равно в тестовых классах писать Autowired (или может я не разбирался, как это сделать)
источник

A

Aleksandr in Spring Framework and more
Можно ещё так, но @Autowired не обязательно , так читабельнее , как по мне  https://pastebin.com/CVJ9edHx
источник

PD

Plomipu Dmitri in Spring Framework and more
Pavel Bukhmatov
Это не "без инъекции". Это такая же инъекция, только через параметр конструктора
я вас понял. Спасибо. Я попробую тогда так сделать. Объявить конструктор и посмотреть будут ли в него передаваться компоненты. Если инъекции не произойдёт, то я тогда ещё напишу вам. Просто чтобы знать, что я делаю не так, ок ?
источник

PB

Pavel Bukhmatov in Spring Framework and more
Plomipu Dmitri
я вас понял. Спасибо. Я попробую тогда так сделать. Объявить конструктор и посмотреть будут ли в него передаваться компоненты. Если инъекции не произойдёт, то я тогда ещё напишу вам. Просто чтобы знать, что я делаю не так, ок ?
Хорошо, тут всегда кто-нибудь есть помочь)
источник

A

Aleksandr in Spring Framework and more
Вопрос по Spring JPA: Всегда ли JpaRepository.saveAndFlush() возвращает полноценную Entity со всеми полями из БД?
источник

PB

Pavel Bukhmatov in Spring Framework and more
Aleksandr
Вопрос по Spring JPA: Всегда ли JpaRepository.saveAndFlush() возвращает полноценную Entity со всеми полями из БД?
Что имеется ввиду под "полноценной Entity"? Вернее даже, что такое "неполноценная"?
источник

A

Aleksandr in Spring Framework and more
Pavel Bukhmatov
Что имеется ввиду под "полноценной Entity"? Вернее даже, что такое "неполноценная"?
в смысле когда все её поля подтягиваются из БД, точнее полноценный маппинг , так наверно корректнее
источник

PB

Pavel Bukhmatov in Spring Framework and more
Aleksandr
в смысле когда все её поля подтягиваются из БД, точнее полноценный маппинг , так наверно корректнее
Все что верно для save, верно и для saveAndFlush. В этом смысле какие-то поля, которые заполняются базой (Например select из sequence и подстановка его в id объекта) также будут доступны, как и при обычно save

saveAndFlush берет текущую JPA транзакцию и... флашит её в транзакцию базы данных, только и всего. Никакой новой магии там не появляется
источник

A

Aleksandr in Spring Framework and more
интересная магия при update , когда апдейтиш не все поля сущности , но указываешь ключь при этом 😄
источник

PB

Pavel Bukhmatov in Spring Framework and more
Ну да, как ни странно update и select в большинстве (во всех?) бд возвращает только количество измененных строк. То что в jpa возвращает какие-то объекты, так ещё и заполненные - это колдовство)
источник
2018 December 24

PD

Plomipu Dmitri in Spring Framework and more
Здравствуйте Павел и остальные разработчики. Хорошая новость в том, что бин сервиса создаётся в приложении, а когда я его значение пытаюсь извлечь в тесте с помощью @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 применить к сервису ??
источник

AD

Aleksandr Dolinskiy in Spring Framework and more
Ну это, обнаружить его...
источник

D

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

PB

Pavel Bukhmatov 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 применить к сервису ??
Может быть много причин, почему он не найден. Нужен код. Можно на pastebin залить
источник