0

I have UserBean in my Spring-MVC project to store user.

@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;
    }
}

Can I autowire it into service layer? Should I autowire it only into controllers?

First way (autowire into servise):

@Service
public class MyServiceImpl implements MyService {

    @Autowired
    UserBean userBean;

    @Override
    public void doSomething(int id) {
       dao.doSomething(id,userBean.getUser());
    }

Second way (autowire into cotroller):

@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());
    }
}

What is better in terms of Spring MVC-Service-DAO architecture?

1 Answers1

0
@Service
public class MyServiceImpl implements MyService {

@Autowired
UserBean userBean;

@Override
public void doSomething(int id) {
   dao.doSomething(id,userBean.getUser());
}

This is the best way (Service), because the controller layer should be used to get the requests, send responses and call Services to run Business logic. Save a user is a service layer task.

Jorge L. Morla
  • 630
  • 5
  • 14