『壹』 Springboot自定義xml文件解析
有時候,要通過自定義XML配置文件來實現一些特定的功能。這里通過例子來說明。
首先,看部分spring載入bean文件的源碼:
spring-beans-5.0.6.RELEASE.jar!/org/springframework/beans/factory/xml/PluggableSchemaResolver.class :
spring-beans-5.0.6.RELEASE.jar!/org/springframework/beans/factory/xml/.class :
可以看出,spring在載入xml文件的時候,會默認讀取配置文件 META-INF/spring.schemas 和 META-INF/spring.handlers 。這樣,我們就可以在這兩個文件添加我們自定義的xml文件格式和xml文件解析處理器。
新建一個Springboot工程,pom如下。
SelfDefineXmlTrial/pom.xml :
然後,新建一個用於測試controller。
com.lfqy.springboot.selfdefxml.controller.SelfDefXmlController :
最後,創建一個Springboot的啟動類。
com.lfqy.springboot.selfdefxml.SelfDefXmlApplication :
運行啟動之後,瀏覽器訪問 http://localhost:8080/selfdefxml/hello 效果如下:
修改前面提到的配置文件 META-INF/spring.schemas 、 META-INF/spring.handlers ,添加xml格式說明。
META-INF/spring.schemas :
META-INF/spring.handlers :
添加xml格式說明配置文件。
META-INF/selfdef.xsd :
添加自定義xml格式處理器類。
com.lfqy.springboot.selfdefxml.selxmlparse.UserNamespaceHandler :
新增xml格式解析類。
com.lfqy.springboot.selfdefxml.selxmlparse.UserBeanDefinitionParser :
新增自定義xml對應的bean類。
com.lfqy.springboot.selfdefxml.beans.User :
添加自定義xml配置文件讀取的相關邏輯。
com.lfqy.springboot.selfdefxml.SelfDefXmlApplication :
到這里,編碼就完成了,工程的目錄結構如下。
運行之後,控制台輸出如下:
這里,通過實現一個啟動時自動初始化的一個servlet來實現。
com.lfqy.springboot.selfdefxml.servlet.StartupServlet :
在啟動時載入servlet,為了方便區分,這里新寫一個啟動類。
com.lfqy.springboot.selfdefxml.
到這里,編碼已經完成,工程的目錄結構如下:
運行之後,控制台輸出如下: