Spring中多設置裝備擺設文件及援用其他bean的方法。本站提示廣大學習愛好者:(Spring中多設置裝備擺設文件及援用其他bean的方法)文章只能為提供參考,不一定能成為您想要的結果。以下是Spring中多設置裝備擺設文件及援用其他bean的方法正文
Spring多設置裝備擺設文件有甚麼利益?
依照目標、功效去拆分派置文件,可以進步設置裝備擺設文件的可讀性與保護性,如將設置裝備擺設事務治理、數據源等少修改的設置裝備擺設與設置裝備擺設bean零丁離開。
Spring讀取設置裝備擺設文件的幾種方法:
1、應用Spring本身供給的ApplicationContext方法讀取
在Java法式中可使用ApplicationContext兩個完成類ClassPathXmlApplicationContext和FileSystemXmlApplicationContext來讀取多個設置裝備擺設文件,他們的結構器都可以吸收一個設置裝備擺設文件數組。
如: ApplicationContext ctx = new ClassPathXmlApplicationContext(configLocations);與采取FileSystemXmlApplicationContext創立ApplicationContext的方法類似,差別僅在於兩者搜刮設置裝備擺設文件的途徑分歧:ClassPathXmlApplicationContext經由過程CLASSPATH途徑搜刮設置裝備擺設文件:而FileSystemXmlApplicationContext則在以後途徑搜刮設置裝備擺設文件。
辦法一:在初始化時保留ApplicationContext對象
代碼:
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); ac.getBean("beanId");
解釋:
這類方法實用於采取Spring框架的自力運用法式,須要法式經由過程設置裝備擺設文件手工初始化Spring的情形。
辦法二:經由過程Spring供給的對象類獲得ApplicationContext對象
代碼:
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");
解釋:
這類方法合適於采取Spring框架的B/S體系,經由過程ServletContext對象獲得ApplicationContext對象,然後在經由過程它獲得須要的類實例。
下面兩個對象方法的差別是,前者在獲得掉敗時拋出異常,後者前往null。
辦法三:繼續自籠統類ApplicationObjectSupport
解釋:
籠統類ApplicationObjectSupport供給getApplicationContext()辦法,可以便利的獲得到ApplicationContext。Spring初始化時,會經由過程該籠統類的setApplicationContext(ApplicationContext context)辦法將ApplicationContext 對象注入。
辦法四:繼續自籠統類WebApplicationObjectSupport
解釋:
相似下面辦法,挪用getWebApplicationContext()獲得WebApplicationContext
辦法五:完成接口ApplicationContextAware
解釋:
完成該接口的setApplicationContext(ApplicationContext context)辦法,並保留ApplicationContext 對象。Spring初始化時,會經由過程該辦法將ApplicationContext 對象注入。
以上辦法合適分歧的情形,請依據詳細情形選用響應的辦法。
2、應用web工程啟動時加載
在web.xml中設置裝備擺設web容器啟動是主動加載哪些設置裝備擺設文件:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/spring-core.xml</param-value> </context-param> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/spring-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
多個的時刻可以用 * 號來取代。
<servlet> <servlet-name>app</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext*.xml,/WEB- INF/user_spring.xml</param-value> </context-param> <load-on-startup>1</load-on-startup> </servlet>
3、Xml設置裝備擺設文件中導入其他設置裝備擺設文件
在/WEB-INF/applicationContext.xml設置裝備擺設運用辦事去加載,可以在applicationContext.xml頂用import引入其他的設置裝備擺設文件
<?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:schemaLocation="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.xsd 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 resource="spring-servlet.xml"/> <import resource="spring-security.xml"/> <import resource="spring-hibernate.xml"/> <import resource="spring-redis.xml"/> </beans>