欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種SpringIOC配置文件的生成方法

文檔序號:6363606閱讀:278來源:國知局
專利名稱:一種Spring IOC配置文件的生成方法
—種Spring IOC配置文件的生成方法
所屬技術(shù)領(lǐng)域4本發(fā)明屬于計算機應(yīng)用開發(fā)領(lǐng)域,涉及XML數(shù)據(jù)綁定技術(shù),具體涉及一種程序化生成Spring IOC配置文件的方法。
背景技術(shù)
Spring作為解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的開源框架,是一個輕量級的控制反轉(zhuǎn)(IOC, Inversion of Control)和面向切面的容器框架,亦是Java開發(fā)領(lǐng)域最為流行的開源框架,被廣泛用于企業(yè)應(yīng)用軟件以及政府信息系統(tǒng)的設(shè)計與研發(fā)。例如中國專利公開號CN101996071A,利用Spring框架封裝實現(xiàn)所述對象數(shù)據(jù)操作命令的Java類文件; 中國專利公開號CN101097615,將Spring用于服務(wù)的管理,進而實現(xiàn)一網(wǎng)行政審批信息系統(tǒng)架構(gòu)。Spring使用基本的JavaBean規(guī)范來完成以前只可能由EJB完成的事情,并致力于J2EE應(yīng)用的表現(xiàn)層、業(yè)務(wù)層以及持久層等各層的解決方案,基于Spring框架,能夠輕松實現(xiàn)控制反轉(zhuǎn)與依賴注入、面向切面編程以及聲明式事務(wù)支持等功能。其中,控制反轉(zhuǎn)和依賴注入功能借助于Java的反射特性,通過遍歷讀取IOC配置文件來創(chuàng)建Java對象,進而實現(xiàn)對象創(chuàng)建與使用的分離,是Spring框架的核心機制之一。凡是符合Spring Beans的 Schema規(guī)范的配置文件均可被Spring框架正確解析,進而創(chuàng)建相應(yīng)的Java對象。XML是可擴展的標記語言,是W3C組織發(fā)布的用于定義互聯(lián)網(wǎng)上數(shù)據(jù)描述與數(shù)據(jù)交換的一種標準,由于其自身良好的跨平臺性、可移植性等特點,目前已被廣泛應(yīng)用于軟件項目中。在Java開發(fā)領(lǐng)域,越來越多的軟件項目采用XML作為其數(shù)據(jù)描述或者數(shù)據(jù)交換的格式,且絕大多數(shù)開發(fā)框架均支持或者只支持XML格式的配置文件,如Spring、Struts以及 Hibernate 等。XML數(shù)據(jù)綁定是指從結(jié)構(gòu)化的XML組件(如元素和屬性)到保留組件邏輯層次的數(shù)據(jù)模型(如Java對象)的映射,它既表示了數(shù)據(jù)的真正含義,也用程序設(shè)計語言的原本格式表示組件。XML數(shù)據(jù)綁定有兩個重要的概念編組和解組。編組是指將對象模型實例轉(zhuǎn)換為XML實例,反之,從XML實例至對象模型實例為解組,如圖I所示。XML數(shù)據(jù)綁定提供了一種簡單而直接的方法,使應(yīng)用程序能夠方便的使用XML來保存對象模型的數(shù)據(jù),進而達到數(shù)據(jù)交換或者應(yīng)用配置的作用。Spring框架解析IOC配置文件并創(chuàng)建相應(yīng)的Java對象可以理解為解組的過程,而本發(fā)明對應(yīng)的實施例可以將Java對象編組為Spring IOC格式的XML文件。一般來說,有兩種選擇實現(xiàn)XML實例到Java對象模型的綁定⑴利用XML數(shù)據(jù)綁定框架;(2)利用Dom4j、Jdom等API編寫數(shù)據(jù)綁定應(yīng)用程序。目前,Java開發(fā)領(lǐng)域的XML數(shù)據(jù)綁定框架主要有Castor、Simple、XStream、 Digester、Jaxb> Jibx、XmlBeans 等。Castor是ExoLab Group的開放源代碼項目之一,主要目標是提供Java對象實例與XML文件實例間的綁定,同時提供SQL和LDAP綁定。Castor利用JavaBean的setter 和getter方法實現(xiàn)對象實例的編組與解組,且可以根據(jù)需要選擇性的使用映射配置文件。Castor的默認映射規(guī)則主要有兩點(1)對象實例的基本數(shù)據(jù)類型屬性以節(jié)點屬性的形式編組到XML文件中;(2)對象實例的高級對象類型屬性以子節(jié)點的形式編組到XML文件中。 Castor數(shù)據(jù)綁定框架的不足之處是利用默認映射規(guī)則生成復(fù)雜嵌套對象的XML文件格式復(fù)雜,不易閱讀與交換,而映射文件的學(xué)習(xí)成本較大;多層次對象的相互引用無法正確編組到XML文件。Simple是一個高性能的XML數(shù)據(jù)綁定和配置框架。它提供完整的對象編組與解組功能,并能夠保持它們的關(guān)聯(lián)關(guān)系。Simple利用注解方式配置XML結(jié)構(gòu),支持數(shù)組以及 List、Map等任意集合對象,并提供完全的命名空間支持,允許版本管理框架向前和向后兼容序列化。相對于其它XML數(shù)據(jù)綁定框架來說,Simple框架具有速度快、配置簡單等特點, 對于構(gòu)造器、模板過濾器等也有很好的支持。但Simple框架不能正確的編組多層次對象的相互引用(相互引用會導(dǎo)致Simple在編組過程中出現(xiàn)異常)等復(fù)雜對象。XStream數(shù)據(jù)綁定框架的特點是不用任何映射就能實現(xiàn)多數(shù)Java對象的序列化, 支持多種XML解析器。XStream將對象以及對象的屬性名稱轉(zhuǎn)換為XML的節(jié)點名稱,屬性的值轉(zhuǎn)換為XML節(jié)點的文本。和其它數(shù)據(jù)綁定框架相比,XStream有三個突出的特點(I)不關(guān)心序列化/逆序列化的類的字段的可見性;(2)序列化/逆序列化類的字段不需要getter 和setter方法;(3)序列化/逆序列化的類不需要有默認構(gòu)造函數(shù)。也就是說,在不作任何修改的情況下,使用XStream就能直接序列化/逆序列化任何第三方類。正是因為XStream 無需任何配置即可直接序列化/逆序列化任何第三方類,導(dǎo)致XML文檔中的自定義元素名稱以及屬性展現(xiàn)方式均需要在序列化代碼中硬編碼實現(xiàn)。Jaxb (Java Architecture for XML Binding)作為 Java 規(guī)范的實現(xiàn),提供了一個快速便捷的方式將Java對象與XML進行轉(zhuǎn)換,已經(jīng)被納入到JavaSE 6. O的標準庫中。同時,在 JAX-WS(Java 的 WebService 規(guī)范之一)中,JavaSE 6.0 自帶的版本 JAX-WS2. 1,其底層支持就是Jaxb。Jaxb亦支持注解方式將Java對象綁定到一段XML,同時可以使用Jaxb的 XJC工具,通過定義Schema的方式實現(xiàn)Java對象與XML的綁定。Jaxb在轉(zhuǎn)換效率以及配置方面均可以和Simple進行媲美,其不足之處亦與Simple框架類似,即不能正確的編組多層次對象的相互引用等復(fù)雜對象。利用Dom4j、Jdom等API編寫數(shù)據(jù)綁定應(yīng)用程序是實現(xiàn) XML實例到Java對象模型綁定的又一解決方案。如,中國專利公開號CN101339500A,提出了一種基于XML模式的數(shù)據(jù)綁定應(yīng)用程序接口生成方法;中國專利公開號CN101699397A, 實現(xiàn)了一種Java與XML數(shù)據(jù)綁定的方法。為實現(xiàn)某些特定的需求,有部分項目也選擇利用 Dom4j、Jdom等API編寫應(yīng)用程序?qū)崿F(xiàn)XML實例到Java對象模型的綁定。然而,這些應(yīng)用程序最大不足在于硬編碼過多,導(dǎo)致靈活性和可擴展性有所欠缺。綜上所述,這些框架、專利或程序在配置、編組效率以及靈活性等方面各有所長, 但相對于本發(fā)明對應(yīng)的實施例來說,具備如下不足(I)多層次對象不能相互引用。上述數(shù)據(jù)綁定框架均采用XML的層次嵌套方式來解決對象實例中對另一個對象的引用。如圖I所示,學(xué)生對象實例(Student)中對地址對象實例(Address)的引用多體現(xiàn)為學(xué)生節(jié)點(〈Student〉)中包含(〈Address〉)節(jié)點。這種層次嵌套方式從根本上就無法解決多層次對象相互引用(例如學(xué)生對象實例有個屬性為班主任實例,而班主任對象實例也有個學(xué)生實例的列表)的數(shù)據(jù)綁定問題,而只能利用一端的綁定來編寫代碼手動注入另外一端的綁定。而Spring IOC配置文件可以很好的定義多層次對象的相互引用且能被Spring框架正確的解組為Java對象實例。(2)無法與Spring框架無縫集成。上述框架、專利或者程序均是將Java對象編組為普通的XML文件實例,無法被Spring框架解析。Spring框架作為當(dāng)今Java開發(fā)領(lǐng)域最為流行的開源框架,能夠為Java應(yīng)用的表現(xiàn)層、業(yè)務(wù)層以及持久層等各層提供優(yōu)秀的解決方案。與Spring框架無縫集成,能夠無縫引用Spring框架上下文定義的其它對象,是發(fā)明實施例的一大特點。(3)單一輸出文件。上述框架、專利或者程序均局限于將某個Java對象編組到某個XML文件,而無法實現(xiàn)對象的多文件編組輸出以及互不關(guān)聯(lián)的多個對象實例同時輸出。 在以Spring框架為核心的Java應(yīng)用中,將應(yīng)用的某些配置信息以XML文本文件的形式保存,并在需要的時候進行還原是實現(xiàn)配置信息持久化的較為普遍而有效的做法。而在很多場合需要將多個毫無關(guān)聯(lián)的對象實例保存在同一個XML文本文件以減少配置文件的個數(shù)或者將一個對象實例保存在不同的文本文件中以控制配置文件的大小。由中國科學(xué)院計算機網(wǎng)絡(luò)信息中心開發(fā)的數(shù)據(jù)管理與共享平臺,利用本發(fā)明的實施例將數(shù)據(jù)模型的配置信息按照類型存儲在不同的配置文件中,以控制配置文件的復(fù)雜度與大小。。目前,有部分企業(yè)應(yīng)用項目根據(jù)自身項目的需求,設(shè)計開發(fā)了Java對應(yīng)到Spring 配置文件格式的編組,但大多局限在特定需求以及特定前提,而無法滿足通用的Java對象編組需求。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種程序化生成Spring IOC配置文件的方法,以解決 Java對象實例編組為Spring IOC配置文件并被Spring框架正確解組的問題。為達到上述目的,本發(fā)明采用如下技術(shù)方案一種Spring IOC配置文件的生成方法,其步驟包括I)載入一個或多個Java對象實例,過濾并讀取欲編組的各Java對象實例的屬性列表;2)根據(jù)Spring IOC配置文件格式以及Java對象實例的屬性類型,創(chuàng)建對應(yīng)的節(jié)點創(chuàng)造器,并由其定義相應(yīng)類型節(jié)點的寫入規(guī)則;3)不同類型的節(jié)點創(chuàng)造器根據(jù)所述寫入規(guī)則生成不同的Spring IOC配置文件節(jié)點,并將Java對象實例及其屬性寫入到所述Spring IOC配置文件節(jié)點中;4)按照用戶定義的輸出方式將所有節(jié)點輸出到Spring IOC配置文件。進一步地,步驟I)通過Map屬性來存儲載入的一個或多個Java對象實例。進一步地,步驟I)通過注解方式讀取并過濾所述Java對象實例的屬性。所述注解方式包括注解本身和注解的解析類,通過所述解析類讀取所有標注的注解進而得到需要編組的屬性列表。進一步地,步驟3)所述屬性類型包括基本類型、對象類型、數(shù)組類型、List類型、 Map類型和Set類型。根據(jù)Spring IOC配置文件格式以及所述屬性類型,基于節(jié)點創(chuàng)造器接口創(chuàng)建所述節(jié)點創(chuàng)造器。進一步地,根據(jù)對象格式化接口以及注冊類,將所有注冊過的Java對象實例格式化為文本字符串。
進一步地,通過對象引用類型節(jié)點創(chuàng)造器以及對象實例與引用節(jié)點間的對應(yīng)關(guān)系實現(xiàn)多層次Java對象的相互引用。進一步地,步驟5)所述用戶定義的輸出方式包括將不同的對象實例輸出到不同的XML文件,將互不關(guān)聯(lián)的多個對象實例輸出到同一個XML文件,以及將一個Java對象實例輸出到不同的XML文件。所述輸出方式通過綁定指定格式的節(jié)點到指定的輸出文件來實現(xiàn)。進一步地,上述方法生成的Spring IOC配置文件可通過Spring框架進行解組。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點和積極效果如下I) Java對象實例間可以相互引用,且可以在Spring IOC配置文件實例中得到正確的表達,并被Spring框架正確解組;2)編組后的Spring IOC配置文件實例可以充分利用Spring框架的其它功能,如聲明式事務(wù)支持、連接池等,豐富配置信息,簡化企業(yè)應(yīng)用的配置;3)實現(xiàn)不同的對象實現(xiàn)輸出到不同的XML文件、互不關(guān)聯(lián)的多個實例輸出到同一個XML文件以及一個對象實例輸出到不同的XML文件等多種需求;4)結(jié)合對象實例的屬性編輯器,支持對象實例的格式化(將對象實例以字符串形式來表達);5)本發(fā)明在保證靈活性、編組效率以及功能需求的同時,極大地簡化了配置工作, 方便用戶使用;6)本發(fā)明可以在以Spring框架為基礎(chǔ)的企業(yè)Java應(yīng)用與政府信息系統(tǒng)中得到應(yīng)用,利用本發(fā)明可以生成Spring IOC配置文件,進而被Spring框架正確解析,實現(xiàn)Java對象與XML文件實例間的編組與解組。動態(tài)生成的Spring IOC配置文件可以用來表達應(yīng)用系統(tǒng)配置信息、數(shù)據(jù)模型以及其它動態(tài)變化的信息。


圖I為普通XML數(shù)據(jù)綁定的編組與解組示例圖。圖2為本發(fā)明實施例的Spring IOC配置文件的生成方法的流程圖。圖3為本發(fā)明實施例的通過編組上下文將Java對象實例寫入到Spring IOC配置文件的流程圖。圖4為本發(fā)明實施例對應(yīng)的編組與解組示例圖。
具體實施例方式下面通過實施例并結(jié)合附圖,對本發(fā)明做進一步的說明。圖2為本實施例的程序化生成Spring IOC配置文件的方法的流程圖,其步驟包括I)設(shè)計并實現(xiàn)Java對象實例裝載機制,實現(xiàn)單個或者多個Java對象實例的裝載。在該步驟中,該Java對象實例裝載機制可以裝載需要編組的單個或多個Java對象實例列表。該機制體現(xiàn)為含有Map屬性的類,可以往Map屬性中添加一個或者多個Java 對象實例,具體在本實施例中體現(xiàn)為SpringBeans類。2)設(shè)計并實現(xiàn)屬性過濾機制,采用注解方式實現(xiàn)需要編組的Java對象的屬性過濾與讀取。在該步驟中,所述的機制包括注解本身和注解的解析類,由解析類讀取所有標注的注解進而得到需要編組的屬性列表;具體到本實施例中,通過設(shè)計OXmlProperty注解來標識屬性(標識屬性對應(yīng)的get方法),設(shè)計AnnotatedBeanWriterFormatFactory類來解析OXmlProperty注解進而獲得需要編組到XML文件實例的屬性列表。3)設(shè)計并實現(xiàn)對象格式化機制,Java對象實例(或?qū)傩?格式化為文本字符串可以有效地隱藏對象實例(或?qū)傩?的內(nèi)部結(jié)構(gòu),減少XML文件實例的大小,并使XML文件實例的層次結(jié)構(gòu)更為清晰。在該步驟中,所述的機制包括值格式化接口(可以獲得格式化后的值)以及對象格式化注冊類,通過對象格式化注冊類,可以注冊所有需要格式化為文本字符串的對象實例與其格式化后的文本字符串之間的對應(yīng)關(guān)系;具體到本實施例中,通過設(shè)計 ValueFormatter接口(具有g(shù)etAsTextO方法)獲得對象實例的格式化文本,通過對象實例格式化工廠(ValueFormaterRegistry類)注冊所有對象實例的格式化文本。4)根據(jù)Spring IOC配置文件格式以及Java對象實例的屬性類型,設(shè)計并實現(xiàn)節(jié)點創(chuàng)造器,并由其定義相應(yīng)類型節(jié)點的寫入規(guī)則。不同類型的節(jié)點創(chuàng)造器根據(jù)寫入規(guī)則生成不同的Spring IOC配置文件節(jié)點,并將Java對象實例及其屬性寫入到Spring IOC配置文件節(jié)點中。在該步驟中,所述的屬性類型包括基本類型、對象類型、數(shù)組類型以及List、Map 和Set等集合類型,分別對應(yīng)基本類型節(jié)點創(chuàng)造器、對象類型節(jié)點創(chuàng)造器、數(shù)組節(jié)點創(chuàng)造器、List節(jié)點創(chuàng)造器、Map節(jié)點創(chuàng)造器和Set節(jié)點創(chuàng)造器。本實施例通過定義節(jié)點創(chuàng)造器接口(EntityNodeCreator)實現(xiàn)基本類型、對象類型、數(shù)組類型、List、Map以及Set等不同屬性類型的節(jié)點創(chuàng)造器,并由各節(jié)點創(chuàng)造器維護各屬性類型的寫入規(guī)則,進而不同類型屬性節(jié)點的創(chuàng)建。5)設(shè)計并實現(xiàn)多文件輸出機制。該步驟可以實現(xiàn)按照用戶定義的輸出方式將所有節(jié)點輸出到Spring IOC配置文件;輸出方式包括將不同的對象實例輸出到不同的XML文件、互不關(guān)聯(lián)的多個實例輸出到同一個XML文件以及一個對象實例輸出到不同的XML文件等情況;本實施例利用FilteredOutput 接口的 getFilterO 方法和 getOutputStream() 方法綁定指定格式的節(jié)點到指定的輸出文件。在上述實施例中,進一步可實現(xiàn)多層次對象屬性相互引用的寫入機制,該機制包括對象引用類型節(jié)點創(chuàng)造器以及對象實例與引用節(jié)點的對應(yīng)關(guān)系維護表。通過對象引用類型節(jié)點創(chuàng)造器以及對象實例與引用節(jié)點間的對應(yīng)關(guān)系實現(xiàn)多層次Java對象的相互引用。在上述實施例中,進一步可實現(xiàn)Java對象及其屬性的遍歷算法與編組上下文。所述的編組上下文通過遍歷對象實例及相應(yīng)的屬性列表,將其寫入到Spring IOC配置文件, 參考圖3,包括如下步驟a)獲得并遍歷對象實例列表;b)創(chuàng)建Spring配置文件格式的根節(jié)點;該根節(jié)點符合Spring配置文件的Schema 規(guī)范。c)獲得對象實例的格式化文本;
d)分析對象實例類型,根據(jù)對象實例類型調(diào)用合適的節(jié)點創(chuàng)造器;e)如果實例為對象類型,分析實例的對應(yīng)節(jié)點是否已經(jīng)創(chuàng)建。如果已經(jīng)創(chuàng)建,則選擇對象引用節(jié)點創(chuàng)造器創(chuàng)建相應(yīng)的對象引用屬性;如果沒有創(chuàng)建,則選擇對象節(jié)點創(chuàng)造器創(chuàng)建對應(yīng)節(jié)點,同時遍歷對象實例屬性列表,進入到步驟d)。在該步驟中,通過維護所有Java對象實例及其引用節(jié)點的對應(yīng)關(guān)系,實現(xiàn)多層次對象的相互引用。在編組過程中,將存在引用節(jié)點的對應(yīng)實例以頂層Bean節(jié)點的形式編組到Spring配置文件中,并分配唯一的ID,而其它引用關(guān)系則以ref的形式體現(xiàn)在各個屬性節(jié)點中。f)如果實例為非對象類型,則選擇基本類型節(jié)點創(chuàng)造器、數(shù)組節(jié)點創(chuàng)造器、Set節(jié)點創(chuàng)造器、Map節(jié)點創(chuàng)造器、List節(jié)點創(chuàng)造器等創(chuàng)建對應(yīng)的節(jié)點。對于數(shù)組、Set、Map以及List等類型來說,所述的數(shù)組節(jié)點創(chuàng)造器、Set節(jié)點創(chuàng)造器、Map節(jié)點創(chuàng)造器、List節(jié)點創(chuàng)造器等會首先創(chuàng)建對應(yīng)的〈array〉、〈set〉、〈map〉以及 〈list〉節(jié)點,然后遍歷其元素列表,進入到步驟d)。對于基本類型,節(jié)點創(chuàng)造器則直接根據(jù)實例對象的值創(chuàng)建節(jié)點。所有節(jié)點創(chuàng)造器維護各自類型節(jié)點的寫入規(guī)則,進而實現(xiàn)不同類型對象實例值的正確編組。g)待所有遍歷完成后,遞歸調(diào)用節(jié)點的writeToO方法,將本節(jié)點寫入到父節(jié)點 (根節(jié)點寫入到虛擬的父節(jié)點);h)將所有對象實例以用戶設(shè)置的輸出方式編組到Spring配置文件實例中。該步驟生成的Spring IOC配置文件可以被Spring框架正確解組。圖4為本實施例對應(yīng)的編組與解組示例圖。下面結(jié)合圖4對本實施例的應(yīng)用所需要的配置作進一步的說明。具體來說,本實施例表現(xiàn)為一個單獨的JAR包,同時依賴于 Dom4j的JAR包。在具體應(yīng)用時,可以將本實施例對應(yīng)的JAR包以及相應(yīng)的依賴包導(dǎo)入到對應(yīng)的企業(yè)項目中,按照如下步驟即可完成Java對象實例到Spring配置文件實例的正確編組,生成的Spring配置文件可以被Spring框架正確解組。I)添加OXmlProperty注解,即為需要編組到XML文件的屬性添加OXmlProperty 注解,具體到本例中,即為Database類、Table類以及Field類相應(yīng)屬性的getXXX()方法添加 OXmlProperty 注解;2)實例化Database對象,并添加到需要編組的對象實例列表中。在本例中,實例化好的Database對象為database ;3)實例化Java對象裝載工具與編組工具,即實例化SpringBeans和 SpringBeansffriter ;4)設(shè)置編組工具的對象格式化方法,此步驟為可選步驟。如果沒有需要編組到字符串的Java對象實例,可不設(shè)置。5)設(shè)置編組工具的對象輸出策略,此步驟為可選步驟。如果不需要實現(xiàn)Java對應(yīng)實例的多文件輸出,則不需要設(shè)置。6)調(diào)用編組工具的write方法,輸出XML文件。根據(jù)上述步驟,本實施例在具體應(yīng)用中的核心代碼如下所示SpringBeans Writer sbw = new SpringBeansWriter();//實例化編組工具 SpringBeans beans = new SpringBeansQ;// 實例化 Java 對象裝載工具 beans.addBean(—database, "database”);//裝載 Java 對象實例
sbw.write(beans, new File(fdatabase.xmVf));// 輸出到XML 文件實例中如果需要設(shè)置編組工具的對象格式化方法,代碼如下所示
II對象實例格式化,將對象實例以字符串的形式編組到XML文件中 //通過設(shè)置SpringBeansWriter的對象實例格式化工廠,實現(xiàn)對象實例的格式化 ValueFormaterRegistry titlePropertyFormater = new ValueFormaterRegistryQ; titleP roper tyFormater. register ValueFormater (Field, class, new Value Format er ()
{
public String ge tAsText(Object raw Value)
{
Field obj = (Field) raw Value;
return f,id:n + obj.getId() + n;length:” + obj.getLength() + n;defaultValue:n + obj.getDefaultValue() +
”;nullValue:” + obj. isNullValueQ;

sbw. setPropertyStringifierFactory(titlePropertyFormater);
在設(shè)置對象實例格式化策略前后,F(xiàn)ield對象在XML文件實例中表現(xiàn)形式如下所
Il設(shè)置對象格式化策略前 <bean class="cn.csdb.commons.vo.Field”〉 〈property name-tIdn value=” l”/>
〈property name=nIengthn value=" 40"/>
〈property name="defaultValue,f value=n,,/>
〈property Yiame=nTiuUValuen value=,’false,,/〉
</bean>
Il設(shè)置對象格式化策略后 id: I; length :40; default Value: ;null Value '.false
如果需要設(shè)置編組工具的對象輸出策略,代碼如下所示
List<FilteredOutpuf> outputs = new ArrayList<FilteredOutput> (); outputs.add(new SimpleFilteredOutput(newMatcher<EntityNode< >>()
{
public boolean matches(EntityNode< > toMatch)
{
Object nodeValue = toMatch ge t Value (); return node Value instanceof Table;
}
},new File(’tabIes.xml,’)));
outputs. add(new SimpleFilteredOutput(new File(丨,database.χπιΓ))); sbw.write (beans, outputs);以上所述僅為本發(fā)明的較佳實施例,凡根據(jù)本發(fā)明權(quán)利要求所做的同等變化與修改,都應(yīng)屬于本發(fā)明的保護范圍。
權(quán)利要求
1.一種Spring IOC配置文件的生成方法,其步驟包括1)載入一個或多個Java對象實例,過濾并讀取欲編組的各Java對象實例的屬性列表;2)根據(jù)SpringIOC配置文件格式以及Java對象實例的屬性類型,創(chuàng)建對應(yīng)的節(jié)點創(chuàng)造器,并由其定義相應(yīng)類型節(jié)點的寫入規(guī)則;3)不同類型的節(jié)點創(chuàng)造器根據(jù)所述寫入規(guī)則生成不同的SpringIOC配置文件節(jié)點, 并將Java對象實例及其屬性寫入該節(jié)點中;4)按照用戶定義的輸出方式將所有節(jié)點輸出到SpringIOC配置文件。
2.如權(quán)利要求I所述的方法,其特征在于,通過Map屬性來存儲載入的一個或多個 Java對象實例。
3.如權(quán)利要求I所述的方法,其特征在于,通過注解方式過濾并讀取所述Java對象實例的屬性。
4.如權(quán)利要求3所述的方法,其特征在于,所述注解方式包括注解本身和注解的解析類,通過所述解析類讀取所有標注的注解進而得到需要編組的屬性列表。
5.如權(quán)利要求I所述的方法,其特征在于所述屬性類型包括基本類型、對象類型、數(shù)組類型、Li st類型、Map類型和Set類型。
6.如權(quán)利要求I所述的方法,其特征在于,根據(jù)對象格式化接口以及注冊類,將所有注冊過的Java對象實例格式化為文本字符串。
7.如權(quán)利要求I所述的方法,其特征在于,通過對象引用類型節(jié)點創(chuàng)造器以及對象實例與引用節(jié)點間的對應(yīng)關(guān)系實現(xiàn)多層次Java對象的相互引用。
8.如權(quán)利要求I所述的方法,其特征在于,所述輸出方式包括將不同的對象實例輸出到不同的XML文件,將互不關(guān)聯(lián)的多個對象實例輸出到同一個XML文件,以及將一個Java 對象實例輸出到不同的XML文件。
9.如權(quán)利要求8所述的方法,其特征在于,所述輸出方式通過綁定指定格式的節(jié)點到指定的輸出文件來實現(xiàn)。
10.如權(quán)利要求I至9任一項所述的方法,其特征在于,生成的SpringIOC配置文件通過Spring框架進行解組。
全文摘要
本發(fā)明提供一種Spring IOC配置文件的生成方法,其步驟包括1)載入一個或多個Java對象實例,讀取并過濾欲編組的各Java對象實例的屬性列表;2)創(chuàng)建對應(yīng)的節(jié)點創(chuàng)造器,并定義寫入規(guī)則;3)節(jié)點創(chuàng)造器根據(jù)寫入規(guī)則生成Spring IOC配置文件節(jié)點,并在該節(jié)點中寫入Java對象實例及其屬性;4)按照不同輸出方式將所有節(jié)點輸出到Spring IOC配置文件。本發(fā)明方法的Java對象實例間可以相互引用,生成的Spring IOC配置文件可被Spring框架正確解組;靈活性和編組效率高,可極大地簡化配置工作,方便用戶使用。
文檔編號G06F9/44GK102609255SQ20121001812
公開日2012年7月25日 申請日期2012年1月19日 優(yōu)先權(quán)日2012年1月19日
發(fā)明者沈志宏, 蘇賢明, 黎建輝 申請人:中國科學(xué)院計算機網(wǎng)絡(luò)信息中心
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
辉南县| 克什克腾旗| 喜德县| 南丰县| 庄河市| 大连市| 阿克陶县| 塔河县| 邵阳县| 修文县| 会宁县| 报价| 抚宁县| 西峡县| 贵溪市| 扬州市| 岐山县| 富裕县| 青河县| 蒲江县| 商南县| 平乐县| 和政县| 逊克县| 绍兴县| 广西| 安康市| 普兰县| 共和县| 闽侯县| 龙山县| 延吉市| 邵阳县| 榆中县| 怀来县| 南丰县| 庄河市| 台东县| 福泉市| 湛江市| 绵竹市|