Встречается на собеседованиях • сегодня

Где лучше размещать Autowired в Spring

В Spring @Autowired можно размещать в нескольких местах, но лучшие практики рекомендуют:

  1. Конструктор (предпочтительно)
    • Самый безопасный и рекомендованный способ, особенно для обязательных зависимостей.
    • Позволяет делать поля final, обеспечивая неизменяемость.
    java
    @Service
    public class UserService {
        private final UserRepository repository;
        
        @Autowired
        public UserService(UserRepository repository) {
            this.repository = repository;
        }
    }
  1. Поля (удобно, но менее тестируемо)

    • Лаконично, но усложняет тестирование без Spring-контекста.
    java
    @Service
    public class UserService {
        @Autowired
        private UserRepository repository;
    }
  2. Сеттеры (редко используется)

    • Подходит для опциональных зависимостей.
    java
    @Service
    public class UserService {
        private UserRepository repository;
        
        @Autowired
        public void setRepository(UserRepository repository) {
            this.repository = repository;
        }
    }

Вывод: Лучше использовать конструктор (можно опустить @Autowired в Spring 4.3+ для единственного конструктора). Полевой инжект — для быстрого прототипирования.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы