杞歡寮鍙戣繃紼嬩腑錛屽敮涓涓嶅彉鐨勫氨鏄彉鍖栥傝繖鏄竴鍙ヨ佺敓甯歌皥錛屼篃灝辨槸璇磋蔣浠跺紑鍙戜腑姘告亽鐨勪富棰樺氨鏄彉鍖栥傚綋浣犳妸浠g爜閮藉啓濂戒簡錛屾祴璇曚篃瀹屾垚浜嗭紝鍑嗗浜や粯鐨勬椂鍊欏鎴峰拷鐒惰姹備綘鍦ㄦ寚瀹氭椂闂村仛鍑哄彉鍖栵紝榪欑鎯呭喌鍦ㄥ鍖呰涓氫腑寰堝父瑙侊紱鑰屽涓浜涢摱琛岄噾铻嶉」鐩紝杈硅皟鐮旇竟寮鍙戣竟嫻嬭瘯灞¤涓嶉矞錛涘浜庝竴浜沇eb欏圭洰錛屼粠鏉ュ氨鍙湁姘歌繙鐨凚eta鐗堬紝鏀規(guī)潵鏀瑰幓鐨勪簨鏇存槸瀹跺父渚塊キ銆傚姝わ紝紼嬪簭鍛樹竴瀹氳姹傛竻鏅扮殑璁よ瘑錛屾姳鎬ㄥ彧鑳芥槸鍢翠笂鐥涘揩錛屼笉瑙e喅瀹為檯闂銆傜湡瑕佽В鍐沖疄闄呴棶棰橈紝闈炶鍔ㄤ竴鐣剳絳嬩笉鍙紝濡傛灉鍚堢悊浣跨敤浜嗚璁℃ā寮忥紝鍙嶅皠鎴栨槸Spring鐨処oC錛屼究鑳藉彉淇敼鍣╂ⅵ涓轟竴嬈℃湁瓚g殑鏅烘収涔嬫梾銆?/p>
棣栧厛鎴戜滑鐪嬪師濮嬭姹傦細(xì)瀹㈡埛瑕佹眰灝嗕竴鎵歸泧鍛樺悕鍗曞瓨鍏ュ埌CSV鍜孹ML涓ょ鏂囦歡涓幓錛屼互鍚庤繕鏈夊彲鑳藉鍔犲埆鐨勬枃浠舵牸寮忥紝姣斿PDF錛孹LS絳夛紝铏界劧榪欐槸涓嬩竴鏈熺殑鍐呭錛屼絾榪欎竴鏈熷簲璇ヨ冭檻鍒板彉鍖栵紝瀹㈡埛瑕佹眰鎵╁睍鎬т竴瀹氳濂姐?/p>
娌¢棶棰橈紝鏈変簡璁捐妯″紡鍝嶅簲鍙樺寲涓嶉毦銆傝繖鏃舵垜浠彲浠ョ敤鍒版ā鏉挎柟娉曟ā寮忥細(xì)
瀹氫箟涓涓搷浣滀腑鐨勭畻娉曠殑楠ㄦ灦錛岃屽皢涓浜涙楠ゅ歡榪熷埌瀛愮被涓?/strong>銆?/p>
鍏堣鐪嬮鏋舵娊璞$被錛?/p>
- public abstract class FileMaker {
-
-
-
- private List<Employee> employees;
-
-
-
-
-
-
-
- public final void makeFile(List<Employee> employees,String fileName){
- setEmployees(employees);
- makeFile(fileName);
- }
-
-
寰堝ソ錛屽浐瀹氱殑鍑芥暟鍜屾楠ら兘鍦ㄦ娊璞″熀綾諱腑鍐欏畾浜嗭紝鍐嶇湅涓や釜鍏蜂綋瀹炵幇綾伙紝瀹冧滑瑕佸疄鐜扮殑灝辨槸makeFile鍑芥暟鑰屽凡銆?/p>
- public class CSVFileMaker extends FileMaker{
- protected void makeFile(String fileName){
- try {
- BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
-
- for(Employee emp:getEmployees()){
- String line="";
- line+=emp.getName()+",";
- line+=(emp.isMale()?"鐢?:"濂?)+",";
- line+=emp.getAge()+",";
-
- out.write(line+"\r\n");
- }
-
- out.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- public class XMLFileMaker extends FileMaker{
- protected void makeFile(String fileName){
- try {
- Document document = DocumentHelper.createDocument();
- Element root = document.addElement("employees");
-
- for(Employee emp:getEmployees()){
- Element empElm=root.addElement("employee");
-
- Element nameElm=empElm.addElement("name");
- nameElm.setText(emp.getName());
-
- Element sexElm=empElm.addElement("sex");
- sexElm.setText(emp.isMale()?"鐢?:"濂?);
-
- Element ageElm=empElm.addElement("age");
- ageElm.setText(String.valueOf(emp.getAge()));
- }
-
- OutputFormat format = OutputFormat.createPrettyPrint();
- format.setEncoding("GBK");
- XMLWriter writer = new XMLWriter(new FileWriter(fileName),format);
-
- writer.write(document);
- writer.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
榪欐牱鏄ㄥ畬浠ュ悗鎰熻寰堝ソ錛屽洜涓烘垜浠垚鍔熺殑鎶婂彉鍖栧拰涓嶅彉鍒嗙寮鏉ワ紝涓嶅彉鐨勯儴鍒嗘斁鍦ㄤ簡鎶借薄鍩虹被涓紝鑰屽鏄撳彉鍖栫殑閮ㄥ垎鏀懼湪浜嗕袱涓叿浣撶殑瀛愮被涓紝榪欐牱濡傛灉鍐嶅鍔犱竴縐嶆柊鏂囦歡鏍煎紡錛屼粠鎶借薄鍩虹被鍐嶆墿灞曞嚭涓涓瓙綾誨嵆鍙傚緢濂斤紝榪欐牱灝變笉鎬曞彉鍖栦簡銆傚鎴峰姝や篃娌℃湁寮傝銆?/p>
璋冪敤紺轟緥濡備笅錛?/p>
- List<Employee> emps=new ArrayList<Employee>();
- emps.add(new Employee("Andy",true,21));
- emps.add(new Employee("Bill",false,23));
- emps.add(new Employee("Cindy",true,25));
- emps.add(new Employee("Douglas",false,28));
-
- FileMaker fileMaker=new CSVFileMaker();
- fileMaker.makeFile(emps, "1.csv");
-
- fileMaker=new XMLFileMaker();
- fileMaker.makeFile(emps, "2.xml");
瀹㈡埛鐪嬪埌浜嗘垜浠殑璋冪敤鐨勪緥瀛愶紝瑙夊緱搴旇鏇寸伒媧諱竴浜涳紝浠栬瀛樻垚鍚勭涓嶅悓鐨勬枃浠舵槸閫氳繃鐐瑰嚮鎸夐挳鏉ュ疄鐜扮殑錛屽鏋滄瘡涓寜閽殑浜嬩歡澶勭悊鍑芥暟閮借鐢熸垚鍏蜂綋瀛愮被宀備笉鏄お姝繪澘浜嗗悧錛熻繖鏍峰仛姣忎釜鏂囦歡涓嬭澆鎸夐挳鐨勪簨浠跺鐞嗕唬鐮佷笉鏄兘涓嶄竴鏍鳳紵
鏈夌偣閬撶悊錛屽浠婄悊瑙e埌榪欎竴灞傜殑瀹㈡埛瀹炲湪鏄笉澶氳浜嗐備笉榪囧緢瀹規(guī)槗婊¤凍浠栫殑闇姹傦紝鎴戜滑鍙互寮曞叆鍙嶅皠鐨勬柟娉曪細(xì)
- public static void main(String[] args) {
- List<Employee> emps=new ArrayList<Employee>();
- emps.add(new Employee("Andy",true,21));
- emps.add(new Employee("Bill",false,23));
- emps.add(new Employee("Cindy",true,25));
- emps.add(new Employee("Douglas",false,28));
-
- callByReflect("csv",emps,"1.csv");
- callByReflect("xml",emps,"2.xml");
- }
-
- public static void callByReflect(String type,List<Employee> emps,String fileName){
- try{
- Class cls=Class.forName("com.heyang."+type.toUpperCase()+"FileMaker");
- FileMaker fileMaker=(FileMaker)cls.newInstance();
- fileMaker.makeFile(emps, fileName);
- }
- catch(Exception ex){
- ex.printStackTrace();
- }
- }
鍥犱負(fù)鎸夐挳涓婄殑鏂囧瓧鍜岀被鍚嶆槸鏈夊叧鐨勶紝濡備笅杞紺SV鐨勬寜閽笂灝辨湁CSV鐨勬枃瀛楋紝榪欏彲浠ラ氳繃姝e垯琛ㄨ揪寮忓彇閬擄紝鍐嶇粍鍚堜竴涓嬩笉灝辨槸綾誨悕浜嗗悧錛?/span>csv鍒癱om.heyang.CSVFileMaker,xml鍒癱om.heyang.XMLFileMaker錛屽叾瀹炲彉鍖栧氨鏄笁涓瓧姣嶈屽凡銆傚鏋滃鍔犳寜閽紝鍙栧嚭鎸夐挳涓殑涓変釜瀛楁瘝鍐嶈皟鐢╟allByReflect鍑芥暟鍗沖彲錛岃繖涓繃紼嬬畝鐩村彲浠ュ浐鍖栥?/span>
瀹㈡埛鐪嬪埌鍙嶅皠鏂規(guī)硶浠ュ悗寰堟槸婊℃剰錛屾病鏈夋剰瑙佷簡銆傚緟瀹㈡埛璧板悗錛岄」鐩粡鐞嗘妸浣犳媺鍒頒竴杈癸紝璇達(dá)細(xì)
“浣犲垰鎵嶇殑鏂規(guī)硶涓嶉敊錛岀‘瀹炲緢寮猴紝浣嗙湅寰楁噦鍙嶅皠騫惰兘鐏墊椿鎺屾彙鐨勪漢姘村鉤瑕佸涓騫寸粡楠屾墠琛岋紝緇存姢鐨勬椿璁╀竴騫寸粡楠岀殑浜哄幓騫插お鍙儨浜嗭紝鏈濂芥敼鏀癸紝鏈濂借揪鍒拌鏂版墜涔熻兘鎺屾彙騫朵慨鏀圭殑紼嬪害銆?#8221;銆?/span>
娌″姙娉曪紝棰嗗鎬繪湁棰嗗鐨勮冭檻錛屼粬榪欎箞璇翠篃寰堝悎鐞嗭紝鎴愭湰闂鎴戝彲浠ヤ笉鑰冭檻錛屼絾濡傛灉鎶婄▼搴忔悶寰楀鏉傝矊浼糔B錛岃兘璁╀竴浜涘鑹轟笉綺劇殑浜轟駭鐢熶簯灞遍浘緗╃殑鎰熻錛屾湁鏃惰繕鑳借浜哄皧縐頒竴澹?#8220;澶т緺”錛屼絾璋佷篃涓嶆瘮璋佸偦澶氬皯錛岃繖澹板ぇ渚犱笉鏄櫧鍙殑錛屼絾鏄嚭浜嗛棶棰樻垨鏄湁浜嗗彉鍖栧埆浜鴻繕鏄鎵句綘錛屽埌澶存潵榪樻槸緇欒嚜宸辨坊涔憋紝榪欎簺閮芥槸涔夊姟鍔沖姩錛屼綍鑻︽潵鍛紵榪樻槸搴旇鏀瑰緱瀹規(guī)槗浜涳紝璁╁ぇ瀹墮兘鑳戒慨鏀癸紝鎴戝彲涓嶆効鎰忓崐澶滀笁鏇磋浜哄彨璧鋒潵闂棶棰樸?/span>
鐢⊿pring鐨処oC灝卞彲浠ヨВ鍐抽棶棰橈紝鍐欎竴涓柊綾誨茍閰嶇疆鍒癤ML鏂囦歡涓鏂版墜鏉ヨ闂涓嶅ぇ錛岃繖涓嬪彲浠ヨ棰嗗鏀懼績浜嗭紝鑷繁灝辨洿鏀懼績浜嗐?/span>
IoC鏂規(guī)浠g爜濡備笅錛?/span>
- public class Main {
- public static void main(String[] args) {
- List<Employee> emps=new ArrayList<Employee>();
- emps.add(new Employee("Andy",true,21));
- emps.add(new Employee("Bill",false,23));
- emps.add(new Employee("Cindy",true,25));
- emps.add(new Employee("Douglas",false,28));
-
- callByIoc("csv",emps,"1.csv");
- callByIoc("xml",emps,"2.xml");
- }
-
- public static void callByIoc(String type,List<Employee> emps,String fileName){
- try{
- ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");
- FileMaker fileMaker=(FileMaker)ctx.getBean(type);
- fileMaker.makeFile(emps, fileName);
- }
- catch(Exception ex){
- ex.printStackTrace();
- }
- }
- }
Bean銆倄ml鏂囦歡鍐呭寰堢畝鍗曞惂錛?/span>
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <bean id="csv" class="com.heyang.CSVFileMaker"/>
- <bean id="xml" class="com.heyang.XMLFileMaker"/>
- </beans>
濂戒簡銆傚埌榪欓噷闂灝卞交搴曠粨鏉熶簡錛岀粓浜庢弧瓚充簡瀹㈡埛鍜屼笂綰х殑瑕佹眰錛屽彲浠ュ洖瀹剁潯涓ソ瑙変簡錛屼笉鐢ㄦ媴蹇冨埆浜烘墦鎼呬簡銆?/span>
鎬佸害鏀瑰彉涓鍒囷紝鍙樺寲鏉ヤ簡浜烘繪槸瑕佸鍋氫竴浜涳紝蹇冪悊褰撶劧鏄笉鎰挎剰鐨勶紝浣嗘姳鎬ㄦ垨鏄秷鏋佹姷鍒墮兘涓嶆槸瑙e喅闂涔嬮亾錛涘鏋滄妸瀹冪湅鍋氫竴涓寫鎴樼殑濂戞満錛屽嚒浜嬪鎬濊冧竴浜涳紝涓嶄絾鑳借В鍐抽棶棰橈紝鑷繁涔熶細(xì)鏈夋墍鎻愰珮錛岃繖灝辨槸縐瀬鐨勬佸害甯︽潵鐨勫ソ澶勩?/span>

]]>