Vimos anteriormente que se puede hacer la inyección de dependencias por medio de archivos xml y usando anotaciones; sin embargo también podemos usar clases de configuración para instanciar objetos de manera fácil y limpia.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Bean("student")
public Student getStudent(Service service) {
return new StudentImpl(service);
}
@Bean("service")
public Service getService() {
return new ServiceImpl();
}
}
La ventaja de este método es que permite liberar a las clases de negocio de anotaciones, dejándolas limpias.
La clave es marcar la clase con el decorador @Configuration, es cual es procesado por el Spring IoC, que en este caso crea las instancias marcadas con @Bean.
Veamos un ejemplo muy básico:
- Creamos una interfaz con un método de prueba:
public interface Service { String hello(); }
- Creamos la implementación del servicio:
public class ServiceImpl implements Service { @Override public String hello() { return "Hola"; } }
- Creamos el archivo de configuración:
@Configuration public class Config { @Bean("service") public Service getService() { Service myService = new ServiceImpl(); System.out.println(myService.hello()); return myService; } }
Lo que hacemos es instanciar la implementación e imprimir en consola el String que viene del método hello, lo que resulta que al ejecutar la aplicación veamos un “hola” en consola.
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.0) Hola
Al ser una clase Java obtenemos las ventajas propias del lenguaje, como asegurarnos del tipado correcto, comprobación en tiempo de compilación y algo mas amigable para la lectura.
También si se desea, podemos usar las anotaciones en conjunto con con las clases de configuración.
Comments
Explorando las Características Estelares de Spring Framework para Crear Aplicaciones Java Robustas y Escalables - jhontona.com