En java, y en general en los distintos lenguajes hay distintas formas de inyectar dependencias.Esto se puede lograr de forma manual o mediante frameworks como Spring, para lograr esta versatilidad, la inyección de dependencias se apoya en la programación orientada a interfaces.