spring-framework-3.2.4.RELEASEjava
jdk1.7.0_11spring
Maven3.0.5eclipse
eclipse-jee-juno-SR2-win32this
此例没必要重复建立项目,上接Spring3-Example项目。code
与前一个项目Spring3-Example中的pom.xml文件一致,没必要修改。xml
假设你的项目须要输出到CVS或者JSON,建立如下类。blog
文件1:IOutputGenerator.java 一个output接口接口
package com.lei.demo.loosely_coupled; public interface IOutputGenerator { public void generateOutput(); }
文件2:CsvOutputGenerator.java CVS输出,实现了IOutputGenerator接口ip
package com.lei.demo.loosely_coupled; public class CsvOutputGenerator implements IOutputGenerator { public void generateOutput() { System.out.println("输出CsvOutputGenerator生成 Output......"); } }
文件3:JsonOutputGenerator.java JSON输出,实现了IOutputGenerator接口get
package com.lei.demo.loosely_coupled; public class JsonOutputGenerator implements IOutputGenerator { public void generateOutput() { System.out.println("输出JsonOutputGenerator生成 Output......"); } }
用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; } }
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>
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......”,结果以下图