spring
Inicialización perezosa de primavera
Buscar..
Inicialización perezosa en la clase de configuración
@Configuration
// @Lazy - For all Beans to load lazily
public class AppConf {
@Bean
@Lazy
public Demo demo() {
return new Demo();
}
}
Para escaneo de componentes y cableado automático
@Component
@Lazy
public class Demo {
....
....
}
@Component
public class B {
@Autowired
@Lazy // If this is not here, Demo will still get eagerly instantiated to satisfy this request.
private Demo demo;
.......
}
Ejemplo de Lazy Init en primavera
@Lazy
nos permite dar instrucciones al contenedor IOC para retrasar la inicialización de un bean. Por defecto, los beans se crean una instancia tan pronto como se crea el contenedor IOC. @Lazy
nos permite cambiar este proceso de @Lazy
instancias.
Lazy-init en primavera es el atributo de la etiqueta bean. Los valores de lazy-init son verdaderos y falsos. Si lazy-init es verdadero, entonces el bean se inicializará cuando se realice una solicitud para el bean. Este bean no se inicializará cuando se inicialice el contenedor de resorte. Si lazy-init es falso, el bean se inicializará con la inicialización del contenedor spring y este es el comportamiento predeterminado.
app-conf.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
<bean id="testA" class="com.concretepage.A"/>
<bean id="testB" class="com.concretepage.B" lazy-init="true"/>
A.java
package com.concretepage;
public class A {
public A(){
System.out.println("Bean A is initialized");
}
}
B.java
package com.concretepage;
public class B {
public B(){
System.out.println("Bean B is initialized");
}
}
Prueba de primavera.java
package com.concretepage;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("app-conf.xml");
System.out.println("Feth bean B.");
context.getBean("testB");
}
}
Salida
Bean A is initialized
Feth bean B.
Bean B is initialized
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow