例子...
我们将创建一个有几个类的项目。项目将以不同的格式输出数据。我们可以选择以CSV格式或JSON格式输出数据。
我们将创建一个有几个类的项目。项目将以不同的格式输出数据。我们可以选择以CSV格式或JSON格式输出数据。...
package com.java2s.output; public interface Printer { public void print(); }
之后,我们将创建CSV打印机,将输出CSV格式的数据。CSV打印机实现打印机接口。
package com.java2s.output.impl; import com.java2s.output.Printer; public class CSVPrinter implements Printer { public void print(){ System.out.println("Csv Output Printer"); } }
然后是时间创建JSON打印机将输出JSON格式的消息。JSON打印机还实现了打印机接口。
package com.java2s.output.impl; import com.java2s.output.Printer; public class JSONPrinter implements Printer { public void print(){ System.out.println("Json Output Printer"); } }
我们有几种方法来使用CSVPrinter或JSONPrinter。 首先我们可以直接调用它。
package com.www..cnmon; import com.java2s.output.Printer; import com.java2s.output.impl.CSVPrinter; public class App { public static void main( String[] args ) { Printer output = new CSVPrinter(); output.print(); } }
这样很容易创建CSVPrinter。 但是如果我们想要改变源代码的话切换到JSONPrinter,我们将不得不更改源代码并重新编译。
对于上面的代码,它很容易改变,因为它有两行代码。 假设我们有成千上万代码和CSVPrinter已被声明了几百次。
通过使用Spring依赖注入(DI),我们可以在Spring配置XML文件中声明Java Bean。 然后在xml文件中连接Java Bean。这样Spring可以使我们的打印机松散耦合到不同的打印机实现。
我们更改Helper类以接受打印机。
package com.java2s.output; import com.java2s.output.Printer; public class OutputHelper { Printer outputGenerator; public void print(){ outputGenerator.print(); } public void setOutputGenerator(Printer outputGenerator){ this.outputGenerator = outputGenerator; } }
然后我们要创建一个Spring bean配置文件并在此处声明所有Java对象依赖关系。
<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-2.5.xsd"> <bean id="OutputHelper" class="com.java2s.output.OutputHelper"> <property name="outputGenerator" ref="csvPrinter" /> </bean> <bean id="csvPrinter" class="com.java2s.output.impl.CSVPrinter" /> <bean id="jsonPrinter" class="com.java2s.output.impl.JSONPrinter" /> </beans>
通过Spring调用它
package com.www..cnmon; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.java2s.output.OutputHelper; public class App { public static void main( String[] args ) { ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"Spring-Common.xml"}); OutputHelper output = (OutputHelper)context.getBean("OutputHelper"); output.print(); } }
要切换打印机,我们只需要为不同的打印机更改Spring XML文件。当Printer更改时,我们需要修改Spring XML文件。
Spring教程 - 弹簧属性我们可以将值或值列表填充到Spring xml配置文件中定义的Java bean。以下部分显示如何将数据填充到java.uti...
Spring教程 -Spring表达式语言运算符Spring Expression Language支持标准的数学,逻辑或关系运算符。Spring Expression Language...
MVC 框架教程Spring web MVC 框架提供了模型-视图-控制的体系结构和可以用来开发灵活、松散耦合的 web 应用程序的组件。MVC 模式...
JSP 教程 JSP与PHP、ASP、ASP.NET等语言类似,运行在服务端的语言。 JSP(全称Java Server Pages)是由Sun Microsystems公司倡导...
Swift教程 -Swift for语句 for 循环执行设置的次数。我们使用 for 关键字以及结束条件和for循环声明。例子以下循环语句向控制台...