Java 具有所有基本自连线服务的基本控制器

Java 具有所有基本自连线服务的基本控制器,java,spring,spring-mvc,design-patterns,Java,Spring,Spring Mvc,Design Patterns,我正在用Spring4开发一个web应用程序。我没有更多的控制器。在它们之下,大多数控制器使用相同的服务。因此,我计划将所有这些公共服务移动到一个公共控制器,并从实际控制器扩展它 这是我的课 B.java class B{ final static Logger _log = Logger.getLogger(BaseController.class.getName()); public B( { } //common methods } @Contr

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

这是我的课

B.java

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

    public B( {

    }



    //common methods
}
@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";
    }
}
TR.java

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

    public B( {

    }



    //common methods
}
@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的控制器。这是正确的方法吗?我在设计中有没有做错什么?

以我的拙见,一个好方法是让控制器成为控制器,让服务来完成服务部分(应用程序的所有繁重工作和业务逻辑)。不要试图把控制器和服务塞进一个类中


通常的做法是将控制器类清理干净。您可以添加指向从基本服务类扩展而来的各种服务类的各种控制器方法。试试看,你会发现你的代码更干净。

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


通常的做法是将控制器类清理干净。您可以添加指向从基本服务类扩展而来的各种服务类的各种控制器方法。试试看,你会发现你的代码更干净。

控制器不同于服务。将BaseController重命名为BaseService,让服务类扩展基本服务以访问公共服务。如果您在许多应用程序中共享了许多公共端点,那么这是一个完全不同的问题。控制器不同于服务。将BaseController重命名为BaseService,让服务类扩展基本服务以访问公共服务。如果你有许多应用程序共享的公共端点,那么这是一个完全不同的问题。