Ответ на задачу про аннотацию @Autowired: https://t.me/java_interview_tasks/62
@Autowired над полем и над сеттером плох тем, что вы можете инициализировать объект с null полями (например в тестах)
@Autowired над конструктором решает эту проблему и рекомендован к использованию.
Один из вариантов использования @Autowired над сеттером это проблема с циклическими зависимостями, но надо понимать, что это не решение проблемы, а просто workaround
В случае если вы используете @Autowired над конструктором, вы получите ошибку при старте контекста и сможете сразу исправить циклические зависимости в бинах
Почитать про это можно тут:
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-dependency-resolution
@Autowired над полем и над сеттером плох тем, что вы можете инициализировать объект с null полями (например в тестах)
@Autowired над конструктором решает эту проблему и рекомендован к использованию.
Один из вариантов использования @Autowired над сеттером это проблема с циклическими зависимостями, но надо понимать, что это не решение проблемы, а просто workaround
В случае если вы используете @Autowired над конструктором, вы получите ошибку при старте контекста и сможете сразу исправить циклические зависимости в бинах
Почитать про это можно тут:
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-dependency-resolution
Telegram
Java Interview Tasks
Какой вариант использования аннотации @Autowired лучше?
#spring
@Autowired private MyService myService; (field injection) / @Autowired public void setMyService(MyService myService); (setter injection) / @Autowired public TestService(MyService myService);…
#spring
@Autowired private MyService myService; (field injection) / @Autowired public void setMyService(MyService myService); (setter injection) / @Autowired public TestService(MyService myService);…
Ответ к последнему вопросу про спринг контроллер (https://t.me/java_interview_tasks/101):
1. Надо сделать поле starterService final. Аннотация @RequiredArgsConstructor добавляет конструктор со всеми final полями, поэтому при создании бина поле starterService не проинициализируется.
2. Не хватает аннотации @PathVariable. Иначе будет всегда collector = null и NPE в collector.toString()
Также был вопрос про @Autowired над полем и над конструктором: https://t.me/java_interview_tasks/62
1. Надо сделать поле starterService final. Аннотация @RequiredArgsConstructor добавляет конструктор со всеми final полями, поэтому при создании бина поле starterService не проинициализируется.
2. Не хватает аннотации @PathVariable. Иначе будет всегда collector = null и NPE в collector.toString()
Также был вопрос про @Autowired над полем и над конструктором: https://t.me/java_interview_tasks/62
Telegram
Java Interview Tasks
Какие тут есть проблемы в коде?
#spring
#spring
👍7🔥2❤1