Как создать контроллеры для доменов простого табличного наследования в Spring MVC? - PullRequest
1 голос
/ 03 апреля 2019

Если я создаю абстрактный класс Document и затем, используя Наследование отдельных таблиц , создаю его подклассы Book и Email, я должен создать класс Controller для каждого подкласса?

Если ответ отрицательный, как внедрить службу определенного класса (например, BookService) в контроллер?

1 Ответ

0 голосов
/ 03 апреля 2019

по моему мнению, вы не должны использовать контроллер для каждого класса модели. Причина в том, что контроллер покрывает задачи, которые вы хотите соединить программно. Как делать все задачи для ваших документов. Если у вас есть подклассы типа 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 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...