У меня есть небольшое приложение Spring MVC, где несколько классов зависят от объекта User.Spring MVC: Пользовательский объект bean best practive
Я хотел бы объявить его как @Component, поэтому я могу получить доступ к этому компоненту из любого места с помощью @Autowired аннотации.
@Component
public class MyUser implements User {
// private fields
// getters and setters
public void fillByName(String username) {
userDao.select(username);
}
}
Очевидно, что объект пользователя должен быть уникальным для каждого пользователя. Я использую Spring Security, поэтому в моем SecurityContextHolder есть имя пользователя, которое я могу использовать для инициализации объекта User.
Какова наилучшая практика для инициализации? Должен ли я объявлять его как компонент, связанный с сеансом? Или я должен держать его как singleton-класс и просто обновлять все поля для каждого запроса? Или, может быть, я должен создать новый объект User из класса Controller для каждого запроса?
Хорошо, спасибо. Но должен ли я создавать объект User через UserDao для каждого запроса в классе Controller? Или мне нужно сохранить выбранный объект пользователя в сеансе? –
Сохранение пользователя в сеансе является обычной практикой, если ваше приложение не масштабируется по горизонтали. Получение объекта каждый раз из базы данных может быть дорогостоящим, если вы не используете кеширование для слоя DAO. – Stan
И, является ли класс Controller правильным местом для создания объекта User? –