Spring3系列2 -- 松耦合的實現
一、 環境
spring-framework-3.2.4.RELEASE
jdk1.7.0_11
Maven3.0.5
eclipse-jee-juno-SR2-win32
此例不必重復創建項目,上接Spring3-Example項目。
二、 pom.xml文件配置
與前一個項目Spring3-Example中的pom.xml文件一致,不必修改。
三、 創建輸出類Output Generator類
假設你的項目需要輸出到CVS或者JSON,創建以下類。
文件1:IOutputGenerator.java 一個output接口
package com.lei.demo.loosely_coupled; public interface IOutputGenerator { public void generateOutput(); }
文件2:CsvOutputGenerator.java CVS輸出,實現了IOutputGenerator接口
package com.lei.demo.loosely_coupled; public class CsvOutputGenerator implements IOutputGenerator { public void generateOutput() { System.out.println("輸出CsvOutputGenerator生成 Output......"); } }
文件3:JsonOutputGenerator.java JSON輸出,實現了IOutputGenerator接口
package com.lei.demo.loosely_coupled; public class JsonOutputGenerator implements IOutputGenerator { public void generateOutput() { System.out.println("輸出JsonOutputGenerator生成 Output......"); } }
四、 用Spring依賴注入調用輸出
用Spring的松耦合實現輸出相應的格式。
首先創建一個需要用到輸出的類OutputHelper.java
package com.lei.demo.loosely_coupled; public class OutputHelper { IOutputGenerator outputGenerator; public void generateOutput(){ this.outputGenerator.generateOutput(); } public void setOutputGenerator(IOutputGenerator outputGenerator){ this.outputGenerator = outputGenerator; } }
五、 創建一個spring配置文件用於依賴管理
src/main/resources下創建配置文件Spring-Output.xml。
<beans xmlns="http://www.springframework.org/schema/beans" 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.0.xsd"> <bean id="OutputHelper" class="com.lei.demo.loosely_coupled.OutputHelper"> <property name="outputGenerator" ref="CsvOutputGenerator" /> </bean> <bean id="CsvOutputGenerator" class="com.lei.demo.loosely_coupled.CsvOutputGenerator" /> <bean id="JsonOutputGenerator" class="com.lei.demo.loosely_coupled.JsonOutputGenerator" /> </beans>
六、 通過Spring調用相應的output
App.java類
package com.lei.demo.loosely_coupled; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App { private static ApplicationContext context; public static void main(String[] args){ context = new ClassPathXmlApplicationContext(new String[] {"Spring-Output.xml"}); OutputHelper output = (OutputHelper)context.getBean("OutputHelper"); output.generateOutput(); } }
現在,已經實現了松耦合,當需要輸出改變時,不必修改任何代碼.java文件,只要修改Spring-Output.xml文件<property name="outputGenerator" ref="CsvOutputGenerator" />中的ref值,就可以實現輸出不同的內容,不修改代碼就減少了出錯的可能性。
七、 目錄結構
八、 運行結果
運行以上App.java,“輸出CsvOutputGenerator生成 Output......”,結果如下圖