¿Cómo se implementa la inyección de dependencia genérica en Spring?
Primero, para desarrollar más rápido y requerir menos configuración, especialmente para el desarrollo de entornos web, Spring ha introducido la inyección de dependencia genérica desde Spring 4.0.
En segundo lugar, inyección de dependencia genérica: la relación de dependencia entre subclases está determinada por su tipo genérico principal y la relación de dependencia entre clases principales deben ser del mismo tipo.
Para decirlo sin rodeos: la dependencia entre dos subclases no necesita declararse en la subclase, sino en la clase principal. El vínculo entre la relación de dependencia es el tipo genérico, que debe ser coherente con el. clase principal. Las dependencias solo pueden ocurrir si los tipos genéricos son los mismos.
Tres diagramas de clases UML:
Explicación: En BaseService, la anotación @Autowired conecta automáticamente la instancia de BaseDao. En UserService, no se inyecta ninguna instancia de UserDao, pero la instancia de UserDao se inyecta en UserService a través del tipo genérico de la clase principal.
Cuatro ejemplos:
public?class?BaseDao
public?void?say()?{
System.out.println("com.nucsoft.spring.Dao.BaseDao.say");
}
}
¿clase pública?BaseService < T>?{
@Autowired
público?BaseDao?baseDao;
público?void?service()?{
Sistema .out.println(baseDao);
baseDao.say();
}
}
}
@Repositorio
público?clase?UserDao?extends?BaseDao
@Servicio
público?{
UserService?userService?=?ctx.getBean(UserService.class);
userService.service();
}
Salida de consola:
p>com.nucsoft.Spring.Dao.UserDao@162a657e
com.nucsoft.spring.Dao.BaseDao.say