如果我创建一个抽象类Document
,然后使用Single Table Inheritence创建其子类Book
和Email
,是否应该为每个子类创建一个Controller类? / p>
如果答案是否定的,如何将特定类的服务(例如BookService)注入Controller?
答案 0 :(得分:0)
不应为每个模型类都使用控制器。原因是控制器涵盖了您要以编程方式组合在一起的任务。就像为文档执行所有任务一样。如果您有像book这样的子类,那么它们也是文档,您可以使用几乎没有新代码的完全相同的控制器来处理它们。
我的模型类如下:
@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
...
}
然后您有一个像这样的控制器。如果您想在控制器内部使用服务,可以例如在春季自动装配服务并对其进行注释。 函数myFunction1可以接受文档和书籍,因此不需要第二个控制器。
@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
}