Java Interview Tasks
3.89K subscribers
185 photos
1 file
121 links
Реальные вопросы и задачи с собеседований.
Оригинальный авторский контент.
Актуальный материал.
Уровень вопросов от junior до supersenior.

Автор канала - @alexzelentsov

По рекламе: @alexzelentsov и https://telega.in/c/java_interview_tasks
Download Telegram
Какой вариант использования аннотации @Autowired лучше?
#spring
Anonymous Quiz
18%
@Autowired private MyService myService; (field injection)
11%
@Autowired public void setMyService(MyService myService); (setter injection)
64%
@Autowired public TestService(MyService myService); (constructor injection)
7%
не понимаю вопрос
Ответ на задачу про аннотацию @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
Какие тут есть проблемы в коде?
#spring
👍9💩6🔥2
Ответ к последнему вопросу про спринг контроллер (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
👍7🔥21