java - 如何在 Spring MVC 中为简单表继承域创建 Controller ?

标签 java spring spring-mvc

如果我创建一个抽象类Document,然后使用Single Table Inheritence ,创建它的子类 BookEmail,我应该为每个子类创建一个 Controller 类吗?

如果答案是否定的,如何将特定类(例如BookService)的服务注入(inject)到Controller中?

最佳答案

在我看来,您不应该为每个模型类使用 Controller 。原因是 Controller 涵盖了您想要以编程方式组合在一起的任务。就像为您的文档执行所有任务一样。如果您有像 book 这样的子类,那么这些也是文档,您可以使用相同的 Controller 来处理它们,几乎不需要新代码。

我的模型类看起来像这样:

@Entity
@Inheritance(strategy= InheritanceType.JOINED)
@Table(name="document")
public abstract class Document{
  ...
  Getters and Setters
  ...
}

@Entity
@Table(name="book")
public class Book extends Document {
  ...
  Getters and Setters
  ...
}

那么你就有了一个像这样的 Controller 。如果您想使用 Controller 内的服务,您可以这样做,例如在 Spring 中 Autowiring 服务并对其进行注释。 函数 myFunction1 接受文档和书籍,因此不需要第二个 Controller 。

@Controller
public class DocumentController {

  @Autowired
  private YourService yourService;

  public <T extends Document> String myFunction1(T myDocument) {
    String result = yourService.getResult(myDocument);
    return result;
  }

  ...
  further functions 
}

关于java - 如何在 Spring MVC 中为简单表继承域创建 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55487468/

相关文章:

java - 扩展 BufferedImage 类

java - java.lang.ClassNotFoundException未指定缺少的类

Java方法组合数组列表: variable number of arguments

java - Spring Security中的同一路径上是否可以有多个AuthenticationProcessingFilter?

java - 重复调用Destroy和New Context是不是不好?

spring-mvc - Spring + Jackson + joda time : how to specify the serialization/deserialization format?

java - Spring MVC Controller 预处理请求体

java - 如何在HandlerInterceptor中读取请求体?

java - 添加到另一个 JPanel 时不显示 JPanel

java - 将对象的变量传递给 thymeleaf 中的 Controller