Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设计带有/不带有特定类实现的接口_Java_Spring Mvc - Fatal编程技术网

Java 设计带有/不带有特定类实现的接口

Java 设计带有/不带有特定类实现的接口,java,spring-mvc,Java,Spring Mvc,好的,我正在设计一个网络应用程序。所以我要创建控制器,首先我用这个方法签名创建接口 public String user(String code); 在实现中,我使用spring,因此为了返回值,需要传递第二个参数来存储值,如下所示 public String user(Model model, String code){ String name = userservice.findUserName(code); model.addAttribute(name);

好的,我正在设计一个网络应用程序。所以我要创建控制器,首先我用这个方法签名创建接口

public String user(String code);
在实现中,我使用spring,因此为了返回值,需要传递第二个参数来存储值,如下所示

public String user(Model model, String code){
      String name = userservice.findUserName(code);

      model.addAttribute(name);
      return "userView";
}

好的,正如您所看到的,这是一个问题,因为我的实现类没有覆盖接口中的方法,但我不想向接口项目添加参数和依赖项,因为我希望接口(设计)是技术中立的


希望有人能给我一些建议。多谢各位

我建议您查看一些,了解编码约定等

控制器不倾向于写入接口——我从来没有见过这样做。不过,您希望您的服务和DAO类是可用的

因此,用户方法的代码看起来像经典的服务层,尽管命名约定通常更像
getUser
getUserForId
。因此,如果从控制器调用此函数,则不必担心
模型
参数,如下所示:

model.addAttribute("user", userService.getUserForId(code));
其中
userService
定义为:

@Inject
UserService userService;

UserService
是接口,
UserService
通过Spring/IoC容器自动注入实现

我建议您查看一些,了解编码约定等

控制器不倾向于写入接口——我从来没有见过这样做。不过,您希望您的服务和DAO类是可用的

因此,用户方法的代码看起来像经典的服务层,尽管命名约定通常更像
getUser
getUserForId
。因此,如果从控制器调用此函数,则不必担心
模型
参数,如下所示:

model.addAttribute("user", userService.getUserForId(code));
其中
userService
定义为:

@Inject
UserService userService;

UserService
是接口,
UserService
通过Spring/IoC容器自动注入实现

“我不想向interfaces项目添加参数和依赖项,”这句话需要澄清。通常在spring中,定义控制器方法后,添加一个注释,将其连接到RequestMapping。我们可以讨论一下,但听起来你希望你的控制器没有这种配置?那句话真的不清楚。你是对的,我的问题不清楚。我想要的是为web层设计接口,但不是包含框架(如spring)中的特定类,而是允许实现人员使用决定使用的任何技术。“我不想向接口项目添加参数和依赖项,”这句话需要澄清。通常在spring中,定义控制器方法后,添加一个注释,将其连接到RequestMapping。我们可以讨论一下,但听起来你希望你的控制器没有这种配置?那句话真的不清楚。你是对的,我的问题不清楚。我想要的是为web层设计接口,但不是包含框架(如spring)中的特定类,而是允许实现者使用决定使用的任何技术。我已经看到web层(控制器)通常不是由接口设计的,我不明白,因为这应该是一个很好的实践(比如在服务o数据层)。我想这样做,因为我的系统将有一些视图(jsp),但也将向其他系统提供一些服务(可能有REST),所以我试图抽象主要操作,但不包括特定的技术。控制器往往是路径特定的。我认为您真正想要的是为您的服务定义接口?正如nickdos在这里描述的那样,这些服务对框架是不可知的。将控制器视为“web控制器”,其具体功能是接收web请求、调用适当的服务并打包web响应。请回答,我正在实践这些概念。我看到web层(控制器)通常不是由接口设计的,我不理解这一点,因为这应该是一个很好的实践(比如在服务o数据层)。我想这样做,因为我的系统将有一些视图(jsp),但也将向其他系统提供一些服务(可能有REST),所以我试图抽象主要操作,但不包括特定的技术。控制器往往是路径特定的。我认为您真正想要的是为您的服务定义接口?正如nickdos在这里描述的那样,这些服务对框架是不可知的。把控制器想象成“web控制器”,它们的具体功能是接收web请求、调用适当的服务并打包web响应。