Как использовать userbean в архитектуре controller-service-dao?
У меня есть UserBean в моем проекте Spring-MVC для хранения пользователя.
@Component
@Scope(value="session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class UserBeanImpl implements UserBean {
private User user;
@Override
public User getUser() {
return user;
}
@Override
public UserBean setUser(User user) {
this.user = user;
return this;
}
}
Могу ли я автоматически подключить его к служебному слою? Должен ли я автоматически подключать его только в контроллеры?
Первый способ (автопрокат в сервис):
@Service
public class MyServiceImpl implements MyService {
@Autowired
UserBean userBean;
@Override
public void doSomething(int id) {
dao.doSomething(id,userBean.getUser());
}
Второй способ (автопровод в котроллер):
@Service
public class MyServiceImpl implements MyService {
@Override
public void doSomething(int id, User user) {
dao.doSomething(id, user);
}
}
@Controller
public class MyController {
@Autowired
UserBean userBean;
@RequestMapping(value = {"/"})
public void do(@RequestParam("id") int id) {
myService.doSomething(id, userBean.getUser());
}
}
Что лучше с точки зрения архитектуры Spring MVC-Service-DAO?
1 ответ
@Service
public class MyServiceImpl implements MyService {
@Autowired
UserBean userBean;
@Override
public void doSomething(int id) {
dao.doSomething(id,userBean.getUser());
}
Это наилучший способ (служба), поскольку уровень контроллера должен использоваться для получения запросов, отправки ответов и вызова служб для запуска бизнес-логики. Сохранить пользователя - это задача уровня сервиса.