Die Feder ist eine leichte Umkehrung der Kontrollinversion (IOC) und tangentorientiertes (AOP) Container-Framework. Wie kann ich Spring -Bohnen in einem Programm konfigurieren?
Bean Factory (com.springframework.bean.factory.beanFactory) ist die Kernschnittstelle des Spring -Frameworks. Es bietet einen erweiterten IOC -Konfigurationsmechanismus. Beanfactory ermöglicht es, verschiedene Arten von Java -Objekten zu verwalten. Der Anwendungskontext (com.springframework.context.ApplicationContext) basiert auf Beanfactory und bietet mehr anwendungsorientierte Funktionen. Es bietet ein internationales Support- und Framework -Event -System, sodass es einfacher ist, praktische Anwendungen zu erstellen. Wir nennen im Allgemeinen Beanfactory einen IOC -Container und ApplicationContext einen Anwendungskontext. Aber manchmal rufen wir auch für den Bequemlichkeitsbereich von Anwendungscontext Spring Container auf.
Für die Zwecke der beiden können wir sie einfach teilen: Beanfactory ist die Infrastruktur des Frühlingsgerüsts, das auf den Frühling selbst abzielt; ApplicationContext ist für Entwickler gedacht, die das Spring Framework verwenden. In fast allen Anwendungsanlässen verwenden wir direkt anstelle der zugrunde liegenden Beanfaktorik.
Es gibt einen signifikanten Unterschied zwischen der Initialisierung von ApplicationContext und Beanfactory: Wenn der Beanfaktor den Container initialisiert, wird die Bohne erst so weitergesetzt, bis die Zielbohne zum ersten Mal zugegriffen wird. während ApplicationContext alle einzelnen Instanzbohnen beim Initialisieren des Anwendungskontexts instanziiert. Daher ist die Initialisierungszeit des ApplicationContext etwas länger als die von beanfaktorisch
Dieser Artikel beinhaltet keine automatische Injektion über @Resource und @autowired und erhält nur Beans in der Federkonfigurationsdatei über ApplicationContext.
Um die in XML konfigurierte Bean zu konfigurieren, ist das Wichtigste, org.springframework.context.ApplicationContext zu erhalten
Die erste Methode, um applicationContext zu erhalten:
import org.springFramework.context.applicationContext; import org.springFramework.context.support.FilesSystemxMlApplicationContext; ApplicationContext ApplicationContext = new FileStemXMlApplicationContext ("ApplicationContext.xml");oder
import org.springFramework.context.applicationContext; import org.springFramework.context.support.classPathXmlApplicationContext; private applicationContext applicationContext = new classPathXmlApplicationContext ("ApplicationContext.xml");Die Instanziierung von ApplicationContext auf diese Weise ist sehr zeitaufwändig. Auf diese Weise eignet sich für eigenständige Anwendungen mit dem Spring-Framework. Es wird nur empfohlen, die Verwendung des Programms durch Konfigurationsdateien manuell zu initialisieren. Die wichtigsten Implementierungsklassen von ApplicationContext sind classPathxMlApplicationContext und DateiSystemXMLApplicationContext. Die ersteren lädt standardmäßig Konfigurationsdateien aus dem ClassPath, und die letzteren laden Konfigurationsdateien standardmäßig aus dem Dateisystem.
Beispiel:
public class beanmanager {private static applicationContext context = new classPathXmlApplicationContext ("AppContext.xml"); public statisches Objekt getBean (String beanid) {return context.getbean (beanid);}}Schreiben Sie ein Servlet in web.xml, starten Sie automatisch und rufen Sie BeanManager in der Init -Methode an
Init () löst ServletException {BeanManager bm = new BeanManager (); // Optional, so dass die Frühling die Bean -Konfiguration beim Starten der Webanwendung lädt. // Andernfalls wird es geladen, wenn der BeanManager zum ersten Mal aufgerufen wird, was die Geschwindigkeit einmal beeinflusst. }Verwenden Sie BeanManager.getbean (String Beanid); im Java -Code, um eine Bean -Instanz zu erhalten.
Die zweite Methode, um applicationContext zu erhalten: applicationContext -Objekt über die von Spring bereitgestellte Werkzeugklasse abrufen. Es ist eine speziell für Webprojekte angepasste Methode. Es wird empfohlen, es in Webprojekten zu verwenden. Zum Beispiel:
ServletContext servletContext = request.getSession().getServletContext();ApplicationContext ac1 = WebApplicationContextUtils .getRequiredWebApplicationContext(ServletContext sc)ApplicationContext ac2 = WebApplicationContextUtils .getWebApplicationContext(ServletContext sc) ac1.getbean ("beanid"); ac2.getbean ("beanid");Holen Sie sich das ApplicationContext -Instanzobjekt über javax.servlet.servletContext, was bedeutet, dass Anforderung, Sitzung usw. verwendet werden muss.
Auf diese Weise kann das ApplicationContext -Objekt nicht als Mitgliedsvariable festgelegt werden. In jeder spezifischen Methode müssen Sie den ServletContext über Anfrage, Sitzung usw. erhalten und dann die AnwendungsContext -Instanz erhalten.
Daher wird diese Methode nur in einem Fall empfohlen, in dem Sie das ServletContext -Objekt erhalten können und das ApplicationContext -Objekt nicht als Mitgliedsvariable definieren müssen.
Hinweis: Wenn Sie WebApplicationContextUtils verwenden, um die ApplicationContext -Instanz zu erhalten, müssen Sie die org.springFramework.Web.Context.ContextloaderListener -Listener in der Web.xml -Konfigurationsdatei hinzufügen, da das ApplicationContext -Objekt nicht erhalten wird und Null zurückgegeben wird.
Konfigurationsdatei: web.xml
<!-contextloaderListener injiziert ApplicationContext automatisch und erhält die Ladedatei für die Federkonfiguration-> <context-Param> <param-name> contextConfigLocation </par AM-Name> <param-value> /web-inf/spring/appcontext.xml,/web-inf/spring/appinterceptor.xml </param-value> </context-param> <hörer> <listener-classen- org
3.. Von abstrakten Klassen ApplicationObjectSupport geerbt
Die abstrakte Klasse applicationObjectSupport bietet die Methode getApplicationContext (), mit der die Anwendungscontext problemlos abgerufen werden kann. Wenn die Spring initialisiert wird, wird das ApplicationContext -Objekt über die Methode SetApplicationContext (ApplicationContext) der abstrakten Klasse injiziert.
V.
Verwenden Sie GetWebApplicationContext (), um org.springframework.web.context.WebApplicationContext zu erhalten, da Webanwendungen mehr Funktionen haben als normale Anwendungen, webapplicationContext erweitert ApplicationContext. WebApplicationContext definiert eine konstante root_web_application_ context_attribute. Wenn der Kontext gestartet wird, befindet sich die WebApplicationContext -Instanz mit diesem Schlüssel in der Attributliste von ServletContext. Daher können wir den WebApplicationContext direkt über die folgende Anweisung aus dem Webcontainer erhalten:
WebApplicationContext Wac = (WebApplicationContext) ServletContext.getAttribute (WebApplicationContext.root_Web_Application_Context_attribute);
5. Implementieren Sie die Schnittstelle applicationContextaware
Implementieren Sie die Methode SetApplicationContext (ApplicationContext Context) dieser Schnittstelle und speichern Sie das ApplicationContext -Objekt. Wenn die Feder initialisiert wird, wird das ApplicationContext -Objekt durch diese Methode injiziert.
Die dritte, vierte und fünfte Methoden erfordern alle die Konfiguration der Klasse in der Feder -Konfigurationsdatei:
<!-Angenommen, ApplicationContextTool ist eine spezifische Implementierungsklasse, die die dritten, vierten und fünften Methoden erbt oder implementiert-> <bean> </bean>
Andernfalls wird der ApplicationContext nicht abgerufen und Null wird zurückgegeben.
Der obige Inhalt führt eine Zusammenfassung der Spring Bean -Methode in Java ein. Ich hoffe, es gefällt Ihnen.