具有所有基本自动服务的基本控制器

时间:2017-08-19 05:27:40

标签: java spring spring-mvc design-patterns

我正在开发一个带弹簧4的Web应用程序。我没有更多的控制器。在他们之下,大多数控制器使用相同的服务。所以我计划将所有这些公共服务移动到一个公共控制器并从实际控制器扩展它。

这是我的课程。

B.java

class B{
    final static Logger _log = Logger.getLogger(BaseController.class.getName());

    public B( {

    }



    //common methods
}

TR.java

@Controller
@RequestMapping("myrequests/transfer")
public class TRController extends B{
    final static Logger _log = Logger.getLogger(TRController.class.getName());


    @Autowired
    public TRController(IInstitutionService institutionService,  HttpServletRequest request, ModelMapper modelMapper, ITransferService transferService) {
        super(institutionService, accessService, userService,  request, modelMapper, assetService);
        this.transferService = transferService;
    }

    @RequestMapping(path = "new", method = RequestMethod.GET)
    public String createRequest(ModelMap model) {
        TransferRequest transferRequest = new TransferRequest();
        User loggedInUser = userService.findByUserId(getPrincipal());
        transferRequest.setRequesterContactNo(loggedInUser.getExtension());
        transferRequest.setRequesterEmail(loggedInUser.getEmail());
        return "newtransferrequest";
    }
}

与上面一样,我有更多的控制器扩展了BaseController。这是正确的方法吗?我在设计中做错了吗?

1 个答案:

答案 0 :(得分:2)

在我看来,一个好的方法是让控制器成为控制器和服务来完成服务部分(应用程序的所有繁重和业务逻辑)。不要试图在一个类中填充控制器和服务。

通常的做法是让控制器类干净。您可以添加各种控制器方法,这些方法指向从基本服务类扩展的各种服务类。试试看,你会看到你的代码更清洁。