Как использовать 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());
}

Это наилучший способ (служба), поскольку уровень контроллера должен использоваться для получения запросов, отправки ответов и вызова служб для запуска бизнес-логики. Сохранить пользователя - это задача уровня сервиса.

Другие вопросы по тегам