如何在Spring MVC中为简单表继承域创建控制器?

时间:2019-04-03 05:09:58

标签: java spring spring-mvc

如果我创建一个抽象类Document,然后使用Single Table Inheritence创建其子类BookEmail,是否应该为每个子类创建一个Controller类? / p>

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

1 个答案:

答案 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 
}