教程集 www.jiaochengji.com
教程集 >  脚本编程  >  java  >  正文 Spring开源框架松耦合示例

Spring开源框架松耦合示例

发布时间:2016-10-22   编辑:jiaochengji.com
教程集为您提供Spring开源框架松耦合示例等资源,欢迎您收藏本站,我们将为您提供最新的Spring开源框架松耦合示例资源
本文我们来讲讲java开源框架Spring的松耦合示例,至于什么是Spring,前面已经介绍过,大家也可以去百度搜搜。松耦合通常是基于消息的系统。

面向对象设计的理念是把整个系统分成一组可重用的组件,然而,当系统变得越大的时候,尤其是在java中,这最大的对象依赖将会紧紧耦合,以至于非常难以管理和修改,而现在,你可以使用Spring框架扮演一个中间模块的角色,方便高效地管理其他组件依赖
输出生成的例子

看个例子,假设你的项目有一个方法可以输出内容到csv或者json格式,你可能写出这样的代码

package com.mkyong.output;

public interface IOutputGenerator
{
public void generateOutput();
}

,然后是实现接口的类

package com.mkyong.output.impl;

import com.mkyong.output.IOutputGenerator;

public class CsvOutputGenerator implements IOutputGenerator
{
public void generateOutput(){
System.out.println(“Csv Output Generator”);
}
}

再写个Json生成的类

package com.mkyong.output.impl;

import com.mkyong.output.IOutputGenerator;

public class JsonOutputGenerator implements IOutputGenerator
{
public void generateOutput(){
System.out.println(“Json Output Generator”);
}
}

有好几种方法来调用IOutputGenerator接口,以及我们如何使用Spring来避免对象的过度耦合。

方法1-直接调用

package com.mkyong.common;

import com.mkyong.output.IOutputGenerator;
import com.mkyong.output.impl.CsvOutputGenerator;

public class App
{
public static void main( String[] args )
{
IOutputGenerator output = new CsvOutputGenerator();
output.generateOutput();
}
}

问题:

这种方法,output这个对象和CsvOutputGenerator耦合在了一起,每次要改变输出格式的话都要修改代码,如果这类代码遍布项目,那么改起来就跪了

方法2-通过帮助类调用

也许你会想创建一个Helper类吧所有的output实现都移进去

package com.mkyong.output;

import com.mkyong.output.IOutputGenerator;
import com.mkyong.output.impl.CsvOutputGenerator;

public class OutputHelper
{
IOutputGenerator outputGenerator;

public OutputHelper(){
    outputGenerator = new CsvOutputGenerator();
}

public void generateOutput(){
    outputGenerator.generateOutput();
}

}

然后可以这样调用

package com.mkyong.common;

import com.mkyong.output.OutputHelper;

public class App
{
public static void main( String[] args )
{
OutputHelper output = new OutputHelper();
output.generateOutput();
}
}

问题:

看起来似乎更加优雅了,你仅仅需要管理这个Helper类就可以实现不同格式的输出需求改变了,然而,Helper还是和CvsOutputGenerator耦合,每一次要改变输出格式的时候,都要对Helper类做一下微调。

方法3-Spring

Spring依赖注入很合适,可以使不同的格式生成类分离开来

首先对OutputHelper做一点微调,添加了一个参数

package com.mkyong.output;

import com.mkyong.output.IOutputGenerator;

public class OutputHelper
{
IOutputGenerator outputGenerator;

public void generateOutput(){
    outputGenerator.generateOutput();
}

public void setOutputGenerator(IOutputGenerator outputGenerator){
    this.outputGenerator = outputGenerator;
}

}

然后创建一个Spring bean配置文件,并声明所有的Java对象依赖

<!— Spring-Common.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-2.5.xsd"&gt;

&lt;bean id="OutputHelper" class="com.mkyong.output.OutputHelper"&gt;
    &lt;property name="outputGenerator" ref="CsvOutputGenerator" /&gt;
&lt;/bean&gt;

&lt;bean id="CsvOutputGenerator" class="com.mkyong.output.impl.CsvOutputGenerator" /&gt;
&lt;bean id="JsonOutputGenerator" class="com.mkyong.output.impl.JsonOutputGenerator" /&gt;

</beans>

然后通过Spring调用

package com.mkyong.common;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.mkyong.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.generateOutput();

}

}


以后要改Json格式,直接改一下xml配置文件就行了。能够减少错误

结论

通过Spring框架的依赖注入,可以优雅的管理对象依赖,更大的灵活性,尤其是对于Java项目非常好用。

您可能感兴趣的文章:
Spring开源框架松耦合示例
快速部署 Spring PetClinic 到函数计算平台
Spring 学习笔记--强烈推荐
Django是什么?一文读懂Django框架
golang微服务框架对比_微服务全流程各组件详细对比分析
golang微服务框架对比_最强开源微服务框架,全网独家整理
golang微服务框架对比_斗鱼开源首秀——基于 Go 的微服务框架 Jupiter
ThinkPHP是软件框架吗
云原生环境下微服务管理系统开发
基于Golang设计一套微服务架构[转]

[关闭]
~ ~