Spring es una inversión liviana de control de control (COI) y marco de contenedores orientado a tangentes (AOP). ¿Cómo obtener los frijoles configurados de Spring en un programa?
Bean Factory (com.springframework.beans.factory.beanfactory) es la interfaz central del marco de Spring. Proporciona un mecanismo de configuración de IOC avanzado. BeanFactory permite administrar diferentes tipos de objetos Java. El contexto de la aplicación (com.springframework.context.applicationContext) se basa en BeanFactory y proporciona más funciones orientadas a la aplicación. Proporciona soporte internacional y sistema de eventos marco, lo que facilita la creación de aplicaciones prácticas. Generalmente llamamos a BeanFactory un contenedor IOC, y ApplicationContext un contexto de aplicación. Pero a veces, en aras de la comodidad de escritura, también llamamos a ApplicationContext Spring Container.
Para los propósitos de los dos, simplemente podemos dividirlos: BeanFactory es la infraestructura del marco de primavera, dirigida a la primavera misma; ApplicationContext es para desarrolladores que usan el marco de Spring. En casi todas las ocasiones de aplicación, usamos directamente ApplicationContext en lugar de la Factory subyacente.
Existe una diferencia significativa entre la inicialización de ApplicationContext y BeanFactory: cuando la Factory de Bean inicializa el contenedor, no instancia el frijol hasta que se accede al bean de destino por primera vez; mientras que la aplicaciónContext instancia todos los frijoles de instancia individual al inicializar el contexto de la aplicación. Por lo tanto, el tiempo de inicialización de AplicationContext será un poco más largo que el de BeanFactory
Este artículo no implica una inyección automática a través de @Resource y @aUtowired, y solo obtiene frijoles en el archivo de configuración de Spring a través de ApplicationContext.
Para configurar el bean en XML, lo más importante es obtener org.springframework.context.applicationContext
El primer método para obtener aplicaciones de texto:
importar org.springframework.context.applicationContext; import org.springframework.context.support.filesystemxmlaPlasplicationContext; applicationContext ApplicationContext = New FilesMystemXMlaPlaspicationContext ("ApplicationContext.xmml");o
importar org.springframework.context.applicationContext; import org.springframework.context.support.classpathxmlaPlaPlicationContext; private Application ApplicationContext = new ClassPathXMLApplicationContext ("ApplicationContext.xml");Instanciar la aplicación de aplicaciones de esta manera lleva mucho tiempo. Esta forma es adecuada para aplicaciones independientes que utilizan el marco de Spring. Solo se recomienda usar cuando el programa necesita inicializar manualmente el resorte a través de archivos de configuración. Las principales clases de implementación de ApplicationContext son classpathXMLApPlicationContext y Files SystemXMLApPlicationContext. El primero carga los archivos de configuración de ClassPath de forma predeterminada, y el último carga archivos de configuración del sistema de archivos de forma predeterminada.
ejemplo:
Public Class BeanManager {private static ApplicationContext context = new ClassPathXMLApPlicationContext ("appContext.xml"); public static object GetBean (String BeanId) {return context.getBean (beanId);}}Escriba un servlet en Web.xml, comience automáticamente y llame a BeanManager en el método de inicio
init () lanza ServletException {BeanManager BM = new BeanManager (); // opcional, de modo que el resorte carga la configuración de Bean cuando se inicia la aplicación web. // de lo contrario, se cargará cuando el beanmanager se convierta por primera vez, afectando la velocidad una vez. }Use beanmanager.getBean (string beanId); en el código Java para obtener la instancia de Bean.
El segundo método para obtener ApplicationContext: Obtenga el objeto ApplicationContext a través de la clase de herramienta proporcionada por Spring. Es un método especialmente personalizado para proyectos web. Se recomienda usarlo en proyectos web. Por ejemplo:
ServletContext servletContext = request.getSession (). sc) ac1.getBean ("beanId"); ac2.getBean ("beanId");Obtenga el objeto de instancia de ApplicationContext a través de javax.servlet.servletContext, que significa que se debe utilizar la solicitud, sesión, etc.
De esta manera, el objeto ApplicationContext no se puede establecer como una variable miembro. En cada método específico, debe obtener el ServletContext a través de la solicitud, la sesión, etc. y luego obtener la instancia de ApplicationContext.
Por lo tanto, este método solo se recomienda en un caso en el que pueda obtener el objeto ServletContext y no necesita definir el objeto ApplicationContext como una variable miembro.
Nota: Cuando se usa WebApplicationContextUtils para obtener la instancia de ApplicationContext, debe agregar el oyente de configuración Web.springframework.web.context.ContextLoLoCeListener en el archivo de configuración web.xml, de lo contrario el objeto AplicationContext no se puede obtener y NULL se devuelve.
Archivo de configuración: web.xml
< Am-name> <amam-value> /webinf/spring/appcontext.xml,/webinf/spring/appinterceptore.xml </param-value> </context-param> <searcher> <searcher-class> org.springframework.web.context.contextiewerlistener </oyearer-class> </oyearer> oyearer>
3. Heredado de la clase abstractor ApplicationObjectSupport
La clase abstracta ApplicationObjectSupport proporciona el método GetApplicationContext (), que puede obtener fácilmente la aplicación. Cuando se inicializa Spring, el objeto ApplicationContext se inyectará a través del método SetApplicationContext (ApplicationContext Context) de la clase abstracta.
4. Heredado de la clase abstracta WebApplicationObjectSupport
Use getWebApplicationContext () para obtener org.springframework.web.context.webapplicationContext porque las aplicaciones web tienen más funciones que las aplicaciones ordinarias, la aplicación webcontext extiende la aplicación de la aplicación. WebApplicationContext define una constante root_web_application_ context_attribute. Cuando se inicia el contexto, la instancia WebApplicationContext se coloca en la lista de atributos de ServletContext con esta clave. Por lo tanto, podemos obtener directamente el WebApplicationContext del contenedor web a través de la siguiente declaración:
WebApplicationContext WAC = (WebApplicationContext) ServletContext.getAttribute (WebApplicationContext.Root_Web_Application_Context_Attribute);
5. Implemente la interfaz ApplicationContextAware
Implemente el método SetApplicationContext (ApplicationContext Context) de esta interfaz y guarde el objeto ApplicationContext. Cuando se inicializa la primavera, el objeto ApplicationContext se inyecta a través de este método.
Todos los métodos terceros, cuarto y quinto requieren configurar la clase en el archivo de configuración de Spring:
<
De lo contrario, el ApplicationContext no se recuperará y se devolverá NULL.
El contenido anterior presenta un resumen del método Spring Bean en Java, espero que les guste.