如果我创建一个抽象类Document
,然后使用Single Table Inheritence ,创建它的子类 Book
和 Email
,我应该为每个子类创建一个 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/