日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Spring如何自定義XML配置擴展

瀏覽:161日期:2023-07-29 13:03:33

在Spring中,我們定義一個自己的標簽有如下步驟:

自己定義一個XSD文件。

定義一個和XSD文件所對應(yīng)的實體類。

創(chuàng)建實現(xiàn)了BeanDefinitionParser的類(其實更好的做法是繼承抽象類AbstractBeanDefinitionParser),去解析我們的自定義標簽。

創(chuàng)建一個繼承了NamespaceHandlerSupport的類,去將我們創(chuàng)建的類注冊到spring容器。編寫自己的Spring.handlers和Spring.schemas

一、定義一個XSD文件

首先我們在resources下創(chuàng)建META-INF目錄。

創(chuàng)建resources/META-INF/model.xsd

<?xml version='1.0'?><xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns='http://demo1.example.com/schema1' targetNamespace='http://demo1.example.com/schema1'> <xsd:complexType name='billType'> <xsd:attribute name='name' type='xsd:string'> </xsd:attribute> <xsd:attribute name='age' type='xsd:int'> </xsd:attribute> </xsd:complexType> <xsd:element name='bill' type='billType'> </xsd:element></xsd:schema>

首先看到xsd:element這塊,這里面的屬性name就是我們以后標簽的名字,type則指向了上面的標簽xsd:complexType這里,這個標簽里面有兩個子標簽都是xsd:attribute,一個代表string類型的name,另一個代表int類型的age,意思就是bill這個標簽里面有name和age兩個屬性。

再就是要注意最上面的幾行,第二行的xmlns:xsd='http://www.w3.org/2001/XMLSchema'這個是必須的,第三行xmlns='http://demo1.example.com/schema'里面這個url你隨便寫,但是要和第四行的targetNamespace保持一致。

二、定義一個和XSD文件所對應(yīng)的實體類

public class ModelBean { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; }}

三、實現(xiàn)BeanDefinitionParser,解析標簽

public class BillBeanDefinitionParser implements BeanDefinitionParser { private final Class<?> beanClass; public BillBeanDefinitionParser(Class<?> beanClass) { this.beanClass = beanClass; } @Override public BeanDefinition parse(Element element, ParserContext parserContext) { GenericBeanDefinition genericBeanDefinition = new GenericBeanDefinition(); genericBeanDefinition.setBeanClass(beanClass); genericBeanDefinition.setLazyInit(false); genericBeanDefinition.getPropertyValues().add('name', element.getAttribute('name')); genericBeanDefinition.getPropertyValues().add('age', element.getAttribute('age')); parserContext.getRegistry().registerBeanDefinition(beanClass.getName(),genericBeanDefinition); return null; }}

四、繼承NamespaceHandlerSupport,注冊類

public class BillNameSpaceHandler extends NamespaceHandlerSupport { @Override public void init() { registerBeanDefinitionParser('bill',new BillBeanDefinitionParser(Model.class)); }}

五、編寫自己的Spring.handlers和Spring.schemas

META-INF/Spring.Handlers

http://demo1.example.com/schema1=com.appst.xmlpc.handler.BillNameSpaceHandlerMETA-INF/Spring.schemas:

http://demo1.example.com/schema1/model.xsd=META-INF/model.xsd

這兩個文件都是properties格式的文件,這兩個文件和開頭的那個xsd都要放在resource目錄下的META-INF文件夾下,再注意Spring.Handlers中的key是要和上面xsd中你自己定義的xmlns一致,value一定要指向你自己定義的NameSpaceHandler的全路徑,Spring.schemas中key前半部分是自己定義的xmlns,后半部分的mytag.xsd就是你自己xsd的文件名。

然后在application-context.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:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:billtag='http://demo1.example.com/schema1' xsi:schemaLocation='http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://demo1.example.com/schema1 http://demo1.example.com/schema1/model.xsd'> <billtag:bill name='bill.li' age='18'/></beans>

然后跑個測試看看:

//指定在單元測試啟動的時候創(chuàng)建spring的工廠類對象@ContextConfiguration(locations = {'classpath:applicationContext.xml'})//RunWith的value屬性指定以spring test的SpringJUnit4ClassRunner作為啟動類//如果不指定啟動類,默認啟用的junit中的默認啟動類@RunWith(value = SpringJUnit4ClassRunner.class)public class SpringTest { @Autowired private ApplicationContext applicationContext; @Test public void testSpring() { ModelBean model = (ModelBean) applicationContext.getBean(ModelBean.class.getName()); System.out.println(model.getAge()); System.out.println(model.getName()); }}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文字幕av一区二区三区四区| 国产综合亚洲精品一区二| 精品国产18久久久久久二百| 99热免费精品| 综合激情五月婷婷| 国产美女精品视频免费播放软件| 久久国产三级精品| 久久精品一区| 成人一区而且| 中文日韩欧美| 国产欧美在线| 婷婷国产精品| 日本高清久久| 成人在线超碰| 国产精品普通话对白| 中文字幕av一区二区三区四区| 久久国产免费看| 亚洲天堂资源| 久久av一区| 国产精品扒开腿做爽爽爽软件| 国产美女高潮在线| 久久国产精品99国产| 国产精品一区三区在线观看| 精品视频一区二区三区在线观看| 一区二区小说| 国产日韩欧美一区二区三区在线观看| 亚洲视频电影在线| 亚洲精品成人| 国产精品传媒麻豆hd| 亚洲高清av| 国产精品对白久久久久粗| 欧美 日韩 国产一区二区在线视频| 免费看欧美美女黄的网站| 国产午夜一区| 激情久久五月| 国产欧美丝祙| 国产亚洲福利| 超碰在线99| 天海翼亚洲一区二区三区| 福利一区在线| 老司机精品久久| 日本一区二区免费高清| 亚洲一区二区日韩| 久久久一本精品| 国产免费av一区二区三区| 欧美日韩国产一区精品一区| 国产精久久久| 免费不卡在线视频| 久久久国产精品一区二区中文| 欧美日一区二区三区在线观看国产免| 亚洲成人av观看| 国产精品欧美日韩一区| 亚洲少妇一区| 亚洲免费福利| 欧美一区激情| 中文一区一区三区免费在线观| 日韩精品永久网址| 久久的色偷偷| 日韩不卡在线观看日韩不卡视频| 国产伊人精品| av免费不卡国产观看| 国产精品v一区二区三区| 免费看黄色91| 欧美国产91| 黑森林国产精品av| 免费在线亚洲| 欧美亚洲三区| 日韩有码av| 午夜在线精品| 在线国产一区二区| 日韩成人亚洲| 97se综合| 国产黄大片在线观看| 国产精品地址| 日韩免费av| 国产精品主播| 日本欧美韩国一区三区| 亚洲一区二区三区四区五区午夜| 欧美三级精品| 荡女精品导航| 国产精品二区影院| 91国内精品| 亚洲青青久久| 91久久亚洲| 在线精品小视频| 欧美日韩国产欧| 国产视频一区三区| 水野朝阳av一区二区三区| 亚洲尤物在线| 蜜桃久久久久久| 亚洲精品伊人| 日韩一区二区三区精品| 日本不卡高清| 国产欧美69| 久久中文精品| 天堂av在线| 国精品一区二区| 亚洲一区区二区| 国产午夜久久| 午夜精品福利影院| 久久国内精品视频| 久久久久亚洲精品中文字幕| 亚洲涩涩av| 久久精品高清| 亚洲女同中文字幕| 亚洲在线观看| 日韩中文字幕| 国产精品一区二区免费福利视频| 国产极品久久久久久久久波多结野| 国产精品v一区二区三区| 国产一区二区三区日韩精品| 香蕉成人av| 香蕉久久久久久久av网站| 亚洲一区二区三区四区五区午夜| 蜜臀av性久久久久蜜臀aⅴ流畅 | 美女尤物国产一区| 国产成人黄色| 欧美a级片一区| 亚洲综合图色| 老司机免费视频一区二区三区| 亚洲欧洲美洲av| 伊人精品在线| 欧美日韩午夜| 精品国产亚洲一区二区三区在线 | 美女视频黄久久| 天堂av在线| 亚洲免费在线| 国产精品黄色| 免费av一区| 国产欧美日韩精品一区二区三区 | 国产精品久久| 欧洲亚洲一区二区三区| 免费视频一区二区| 国产成人久久| 国产精品免费99久久久| 精品午夜av| 激情婷婷综合| 日本视频中文字幕一区二区三区| 精品亚洲免a| 妖精视频成人观看www| 热久久久久久| 激情欧美丁香| 久久99免费视频| 99视频精品免费观看| 久久不卡国产精品一区二区| 激情综合网五月| 国产精品一区二区av交换| 欧美在线观看视频一区| 综合在线一区| 国产91在线播放精品| 水野朝阳av一区二区三区| 久久精品二区亚洲w码| 免费在线观看不卡| 日韩大片在线| 国产欧美亚洲一区| 日韩午夜免费| 水蜜桃久久夜色精品一区| 在线精品福利| 四虎884aa成人精品最新| 欧美日韩精品一区二区三区视频| 蜜桃国内精品久久久久软件9| 国产精品一卡| 自拍自偷一区二区三区| 成人小电影网站| 91精品国产91久久久久久黑人| aⅴ色国产欧美| 成人污污视频| 日韩中文字幕视频网| 欧美日韩激情| 日韩欧美午夜| 国产精品传媒麻豆hd| 蜜桃免费网站一区二区三区| 久久久久久黄| 日韩成人a**站| 国产乱码精品一区二区三区亚洲人 | 日韩一区二区三区精品| 99久久婷婷| 成人午夜网址| 欧美aaaaaa午夜精品| 91精品福利观看| 中文字幕成人| 亚洲免费精品| 91精品国产调教在线观看| 美女国产一区二区三区| 日本在线视频一区二区| 中日韩男男gay无套| 三上悠亚国产精品一区二区三区| 美女精品视频在线| 日韩美女精品| 亚洲精品人人| 综合激情五月婷婷| 综合国产视频| 蜜桃视频一区二区三区在线观看| 91久久中文| 狠狠爱www人成狠狠爱综合网| 91精品啪在线观看国产18| 成人在线超碰| 中文字幕人成乱码在线观看| 国产精品mv在线观看| 国产欧美日韩精品一区二区免费 |