java - 接口(interface) RestController 中的注解

标签 java spring inheritance controller

<分区>

我创建了界面:

@RequestMapping("/data")
public interface PersonControllerInterface {

    @RequestMapping(value="/person/{id}", method=RequestMethod.GET)
    public Person getPersonDetail(@PathVariable final Integer id);

}

和实现该接口(interface)的类:

@RestController
public class PersonController implements PersonControllerInterface {

    @Override
    public Person getPersonDetail(final Integer id) {
        final Person p = new Person(id);
        return p;
    }

}

但是在我调用 GET localhost:8080/data/person/4 之后。我得到了:

DEBUG o.s.web.servlet.DispatcherServlet - Could not complete request
java.lang.NullPointerException: null
at com.concretepage.Person.<init>(Person.java:12)
at com.concretepage.PersonController.getPersonDetail(PersonController.java:16)

Person 类:

public Person(final Integer id) { this.id = id; }

在 jax-rs 中我可以做类似的事情,但在 Spring 中它不能获取路径中的 id。我的问题有什么解决方案吗?我真的不想在我的实现类中放置 @PathVariable 注释。

编辑:它不是修复 NPE 的副本。将注释从接口(interface)类传播到实现中是一个问题。

最佳答案

您正在将 Rest 接口(interface)与您的应用程序接口(interface)绑定(bind)在一起……我无法想象此解决方案在何种情况下会有帮助。只需在简单类中进行请求映射(这样很容易找出请求结束的位置),如果您需要更改实现,只需在其中选择一个(或者如果需要,使用一些 DI)。

编辑:好的,有可以生成界面的工具,无论如何这看起来像重复的https://stackoverflow.com/a/8005644/2037762

关于java - 接口(interface) RestController 中的注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34590794/

相关文章:

javascript - 在基于原型(prototype)继承的语言中使用类

java - 如何从带注释的 java 类编写/生成 CSV 文件

java - 在 Glassfish 中将 JDBC 资源配置到连接池

java - Spring单例内存使用优化

java - 引发了 SQLException,java.lang.InterruptedException,我的数据库连接用完了吗?

c++ - 了解 C++ 中子类的类

java - 将重复键放入 HashMap 时会发生什么?

Java如何检查mysql是否正在运行

java - 在 XML 配置中引用 JavaConfig 时获取 NoSuchBeanDefinitionException

mysql - GRAILS:使用域子类