Quels sont les avantages des fichiers multi-configuration printanières?
La division des fichiers de configuration en fonction de l'objectif et de la fonction peut améliorer la lisibilité et la maintenance des fichiers de configuration, tels que des configurations distinctes avec peu de modifications telles que la gestion des transactions de configuration et les sources de données et les beans de configuration.
Plusieurs façons Spring lit les fichiers de configuration:
1. Lire en utilisant la méthode ApplicationContext fournie par Spring lui-même
Dans les programmes Java, vous pouvez utiliser ApplicationContext deux classes d'implémentation ClassPathxmlApplicationContext et FileSystemXmlApplicationContext pour lire plusieurs fichiers de configuration, et leurs constructeurs peuvent recevoir un tableau de fichiers de configuration.
Par exemple: applicationContext ctx = new ClassPathxmlApplicationContext (configLocations); est similaire à la façon de créer ApplicationContext à l'aide de FileSystemXmlApplicationContext, la seule différence est que les chemins de main des deux fichiers de configuration de recherche sont différents: ClassPathxmlApplicationContext recherche des fichiers de configuration via le chemin de configuration de ClassPath: FileSystemXmlApplicationContext recherche des fichiers de configuration dans le chemin actuel.
Méthode 1: Enregistrer l'objet ApplicationContext lors de l'initialisation
Code:
ApplicationContext ac = new FileSystemXmlApplicationContext ("ApplicationContext.xml"); ac.getBean ("beanid"); illustrer:
Cette méthode convient aux applications autonomes à l'aide du framework Spring, où les programmes nécessitent que Spring soit initialisé manuellement via des fichiers de configuration.
Méthode 2: Obtenez un objet ApplicationContext via la classe d'outils fournie par Spring
Code:
import org.springframework.web.context.support.webapplicationContextUtils; ApplicationContext AC1 = webApplicationContextUtils.getRequiredWebApplicationContext (ServletContext SC) ApplicationContext AC2 = WebApplicationContextUtils.getWebApplicationContext (ServletContext SC) AC1.getBean ("beanId"); ac2.GetBean ("beanid"); illustrer:
Cette méthode convient aux systèmes B / S à l'aide de Spring Framework, à l'obtention de l'objet ApplicationContext via l'objet ServletContext, puis à l'obtention de l'instance de classe requise via celui-ci.
La différence entre les deux méthodes d'outils ci-dessus est que le premier lance une exception lorsque l'acquisition échoue, et le second renvoie null.
Méthode 3: Hérité de la classe abstraite ApplicationObjectSupport
illustrer:
La classe abstraite ApplicationObjectSupport fournit la méthode GetApplicationContext (), qui peut facilement obtenir l'applicationContext. Lorsque Spring est initialisé, l'objet ApplicationContext sera injecté via la méthode setApplicationContext (ApplicationContext Context) de la classe abstraite.
Méthode 4: Hérité de la classe abstraite WebApplicationObjectSupport
illustrer:
Semblable à la méthode ci-dessus, appelez getWebApplicationContext () pour obtenir WebApplicationContext
Méthode 5: Implémentez l'interface ApplicationContextAware
illustrer:
Implémentez la méthode setApplicationContext (ApplicationContext Context) de cette interface et enregistrez l'objet ApplicationContext. Lorsque le printemps est initialisé, l'objet ApplicationContext est injecté via cette méthode.
Les méthodes ci-dessus conviennent à différentes situations, veuillez choisir la méthode correspondante en fonction de la situation spécifique.
2. Chargement lors de l'utilisation du démarrage du projet Web
Quels fichiers de configuration sont automatiquement chargés dans web.xml:
<ftext-param> <param-name> contextConfigLocation </ Param-name> <Am param-value> /web-inf/spring/spring-core.xml </ param-value> </ context-param> <Serplet> <Serplet-Name> SpringMvc </vrlett-name> <Servlet-Class> org.springframework.web.servlet.dispatcherServlet </vrlett-Class> <Init-Param> <Am param-Name> Inf / Spring / Spring-servlet.xml </ Param-Value> </ Init-Param> <Choad-on-Startup> 1 </ Load-on-Startup> </Servlet> <Serplet-Mapping> <Serplet-Name> SpringMvc </Serplet-name> <Url-Pattern> / </url-stempern> </ serplet-mapping>
Lorsqu'il y a plusieurs nombres, vous pouvez utiliser * pour les remplacer.
<VerTlet> <Servlet-Name> App </ serplet-name> <servlet-Class> org.springframework.web.servlet.dispatcherservlet </ servlet-class> <context-param> <param-name> contextConfigLocation </ Param-name> <Am param-value> /web-inf/ApplicationContext*.xml ,/web-inf/user_spring.xml </ param-value> </ context-param> <hoard-on-startup> 1 </ charge-on-startup> </ servlet>
3. Importez d'autres fichiers de configuration dans le fichier de configuration XML
Configurez le service d'application à charger dans /web-inf/ApplicationContext.xml. Vous pouvez utiliser l'importation pour importer d'autres fichiers de configuration dans ApplicationContext.xml.
<? xml version = "1.0" Encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: context = "http://www.springframework.org/schema/context" xmlns: p = "http://www.springframework.org/schema/p" xmlns: mvc = "http://www.springframework.org/schema/mvc" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: scheMalation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsdd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd"><IMPORT ressource = "spring-servlet.xml" /> <importer ressource = "spring-security.xml" /> <importance royce = "spring-hibernate.xml" /> <importer ressource = "spring-redis.xml" /> <importer ressource = "spring-redis.xml" /> <anks>