David Gómez Rubio

Analista funcional

Project Manager

Dirección de equipos informáticos

David Gómez Rubio

Analista funcional

Project Manager

Dirección de equipos informáticos

Artículo del Blog

Spring Framework – Inyección de dependencias utilizando la configuración de Java

Spring Framework – Inyección de dependencias utilizando la configuración de Java

En Spring a partir de la versión 4, el lugar donde se deben configurar los beans es en  los metadatos de configuración. Los metadatos de configuración se pueden definir de 4 maneras:

  1. XML
  2. Anotaciones Java
  3. Código Java
  4. Configuración maravillosa

Para la DI utilizando la configuración de Java, debe utilizar una  clase JavaConfig y anotarla con  @Configuration . Dentro de esa clase, se declaran algunos métodos que devuelven beans (instancias configuradas de ciertas clases POJO que estarán disponibles en el contexto de Spring) y estos métodos deben anotarse con @Bean . 

Aquí hay un ejemplo:

package fs.david

@Configuration
public class PersonalConfig {

@Bean
public NuestraBeanClass nuestraBeanClass {
return new NuestraBeanClass();
}
}

Es importante mencionar el hecho de que el nombre del bean en el contexto será el mismo que  el nombre del método y, si desea un nombre diferente, deberá usar el  atributo de nombre para la anotación @Bean.

@Bean(name="unNombrePersonal")

Para inyectar un bean en otro, simplemente llama al método que crea el bean y Spring intercepta la llamada para que el método devuelva el bean existente en lugar de ejecutarse nuevamente:

package fs.david

@Configuration 
public class PersonalConfig{

@Bean
public NuestraBeanClass nuestraBeanClass{
return new nuestraBeanClass();
}

@Bean 
public BeanConInyeccion beanConInyeccion(){
return new BeanConInyeccion(nuestraBeanClass());
}
}

O, alternativamente, configura un parámetro de algún tipo que ya sea un bean para el método y todo se conectará automáticamente:

package fs.david

@Configuration 
public class PersonalConfig{

@Bean
public NuestraBeanClass nuestraBeanClass{
return new NuestraBeanClass();
}

@Bean 
public BeanConInyeccion beanConInyeccion(NuestraBeanClass nuestraBeanClassObject){
return new BeanConInyeccion(nuestraBeanClassObject);
}
}

Para usar esta clase de configuración, debe usar una implementación adecuada de ApplicationContext. Por lo general, se utilizará  AnnotationConfigApplicationContext .

package fs.david

public static void main(String[] args){
ApplicationContext context = new AnnotationConfigApplicationContext(PersonalConfig.class);
NuestraBeanClass bean = context.getBean(NuestraBeanClass.class);
/*
Aquí haces algo con el bean
*/
}

El ApplicationContext puede instanciarse sin ninguna clase de configuración especificada y, en ese caso, puede proporcionarla utilizando el  método .register() .

package fs.david

public static void main(String[] args){
ApplicationContext context = new AnnotationConfigApplicationContext();
context.register(PersonalConfig.class);
context.register(Config2.class);
context.refresh();
NuestraBeanClass bean = context.getBean(NuestraBeanClass.class);
/*
Aquí haces algo con el bean
*/
}

Presta atención al  método .refresh() .

También hay algunas cosas más que mencionar sobre las clases de @Configuration:

  • Usa @Import para fusionar varias clases de @Configuration
  • Usa @Autowire y @Value dentro de las clases de @Configuration ya que estas clases son beans en sí mismas 

La combinación de estilos XML y JavaConfig es posible de las siguientes maneras:

  • La  forma centrada en XML se realiza cuando utiliza principalmente metadatos XML y una configuración de aplicación basada en XML. Por ejemplo, usa ClassPathXmlApplicationContext. En este caso, debes configurar el archivo de metadatos XML para que permita utilizar las anotaciones @Configuration y @Autowired en las clases JavaConfig que se declararán como beans. Esto se logra mediante:
<beans>
<!-- El siguiente tag habilita para @Autowired y @Configuration -->
<context:annotation-config/>

<!-- Aquí hacemos referencia a la configuración de clase declarandola como
un bean, porque cualquier clase @Configuration es un bean -->
<bean class="com.foo.AlgunaConfigClass"/>
<bean class="com.foo.AlgunaPojoBeanClass"/>
</beans>

Debido a que la anotación @Configuration está metaanotada con la anotación @Component, cualquier clase de @Configuration es candidata para el escaneo de componentes. En esencia, eso significa que puede buscar la clase JavaConfig si proporciona la siguiente línea de código en su configuración XML:

<context:component-scan base-package="com.foo"/>
  • En la  forma centrada en la configuración de JavaConfig y XML, tienes que usar la anotación @ImportResource para usar metadatos XML en una configuración JavaConfig. Puedes usarlo después de la anotación @Configuration. Con esto, estás importando la definición XML a la clase config.

Índice de contenidos Spring Boot

Taggs:
Escribe un comentario
medyum, medyumlar, medyum hoca, derin hoca, güvenilir medyum,medyum, medyumlar, medyum hoca, derin hoca, güvenilir medyum,medyum, medyumlar, medyum hoca, derin hoca, güvenilir medyum,medyum, medyumlar, medyum hoca, derin hoca, güvenilir medyum,medyum, medyumlar, medyum hoca, derin hoca, güvenilir medyum,
HacklinkHair Transplant istanbul
da pa kontrolü
hacklink
marsbahis
tarafbet
marsbahis giriş
Tarafbet giriş
bahçelievler nakliyat
istanbul evden eve nakliyat
istanbul bahçelievler evden eve nakliyat
hair transplant
istanbul anlık haberler
extrabet
extrabet
romabet
romabet
romabet
casibom
casibom
holiganbet
bahiscasino
casibom
deneme bonusu veren siteler
adana escort
Kingroyal
kingroyal
madridbet
madridbet giriş
Vaycasino
vaycasino giriş
Tarafbet
Tarafbet Giriş
Marsbahis
Marsbahis Giriş
esenyurt escortesenyurt escortesenyurt masaj salonuavc?lar masaj salonubeylikdüzü masaj salonudiyarbak?r escortdiyarbak?r escortdiyarbak?r escortfethiye escortEscort Ispartakonyaalt? escort