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