Чтение о типе стирания должно помочь вам понять это немного лучше.
Во время выполнения типовые параметры для универсального класса стерты . То есть, как сказал Клетус, дженерики в Java - это, по сути, синтаксический сахар - они являются только функцией времени компиляции.
Поскольку Spring создает экземпляры объектов во время выполнения, он на самом деле может свободно создавать Dao
любого типа - и на самом деле ничто не мешает ему создать Dao
и передать типы Student
в некоторых методы и Teacher
типы в другом.
Таким образом, в основном ответ таков: Spring не знает, что тип Dao
предназначен для параметризации, и с ним ничего не может поделать.