`
kayo
  • 浏览: 556569 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

[原创]利用IOC的概念改造代码

阅读更多
以前写了一个数据采集系统,由于时间紧,以前概念模糊,没有考虑到不同数据库之间的字段映射关系。现在这个系统需要进行全省推广,所以就必须要改造这部分代码。

按照以前的想法,改造的时候肯定需要修改许多代码,但是仔细一想Spring中的IOC概念,于是用这种思想试试。

果然很不错,说真的,IOC太好了。我只是在原有的代码中插入一个引用点,所有的业务都在实现IOC概念的xml配置文件中搞定了。这是大的方面的IOC概念

在代码级别,也通过IOC概念编写,就是代码只负责处理数据,不负责处理业务。业务就放在Xml中进行定义。

通过这些完成了代码的改造。

代码如下:
-----------改造点--------------
public String toString(DB2DB t) {
StringBuffer sb = new StringBuffer();
sb.append(this.getColumnName()).append(" ");

sb.append(t.transformType(this.getType()));//这里就是插入点

---------处理的xml的代码-------------
还未用singleton改造

public class DB2DB {

private List getMapping() {
try {
SAXReader reader = new SAXReader();
Document doc = reader.read(this.getClass().getResource("/db2db.xml").getPath());
Element e = doc.getRootElement();
//得到对应的数据库类型下的映射对照
return doc.selectNodes("/dbmapping/"+e.attributeValue("db2db")+"/*");
}catch(Exception e) {
e.printStackTrace();
}
return null;
}

private String getNewType(String oldType,List nlist) {
if (nlist == null || nlist.size() == 0)
throw new IllegalArgumentException("未找到对应的数据库字段映射,请检查名称或在db2db.xml登记 类:"+this.getClass().getName());
for (int i=0; i<nlist.size(); i++) {
Element e = (Element)nlist.get(i);
if (oldType.trim().equals(e.attributeValue("from").trim())){
return e.attributeValue("to");
}
}
//如果没有找到对应的映射,就返回默认映射
Element e = (Element)nlist.get(0);
if (e.attributeValue("dto") == null)
throw new IllegalArgumentException("未找到字段匹配和默认值,请检查名称或在db2db.xml登记 类:"+this.getClass().getName());
return e.attributeValue("dto");
}

public String transformType(String oldType) {
return getNewType(oldType,getMapping());
}



public static void main(String[] args) {
DB2DB t = new DB2DB();

System.out.println(t.transformType("int"));

}


---------------业务定义、映射XML--------------------


<?xml version='1.0' encoding='utf-8'?>
<!--
文档说明:db2db.xml用于登记不同数据库直接字段映射关系
dbmapping的db2db属性用于说明本系统使用的是哪种库的映射
<default dto >用于指定某种数据库字段映射为找到时使用的默认值
<field form to>用于指定字段类型的映射关系
-->
<dbmapping db2db="sybase2mssql">
<sybase2mssql>
<default dto="varchar(20)" />
<field from="int" to="int" />
</sybase2mssql>

<oracle2mssql>
<default dto="varchar(230)" />
<field from="int1" to="d" />
</oracle2mssql>

<mysql2mssql>
<default dto="varchar(20)" />
<field from="int" to="numberic" />
</mysql2mssql>


</dbmapping>
分享到:
评论
2 楼 kayo 2008-08-04  
请你阅读这篇文章,也许对你有点作用。

   

http://kayo.iteye.com/blog/196182
1 楼 looxiaohu 2008-08-02  
你好,向你请教关于java的数据采集技术,不知道怎么做,希望你能给例子,谢谢。
   email:looxiaohu@hotmail.com

相关推荐

    SpringIOC示例源代码

    在这个示例源代码中,我们可以看到多个Java类和一个bean.xml配置文件,这些都是实现Spring IOC的关键组成部分。 首先,让我们了解一下什么是控制反转(IOC)。在传统的程序设计中,对象通常自行创建其依赖项,但在...

    最新的ioc代码例子

    在这个最新的IOC代码例子中,我们将深入探讨如何在Java项目中实现IoC。 首先,创建一个空的Java工程是开始任何编程项目的基础步骤。这通常涉及到使用IDE(如Eclipse, IntelliJ IDEA等)来创建一个新的项目,设置好...

    IOC容器_原理代码

    **IOC容器原理与实现** IOC(Inversion of Control),即控制反转,是软件设计模式中的一种核心概念。在Java开发中,Spring框架是最为著名的实现IOC的库。...通过实践代码`iocDemo`,我们可以更深入地理解这些概念。

    SpringIoc示例代码

    Spring IOC,全称...通过`TestSpringIoc`的测试,我们可以确保Spring IOC的配置和使用符合预期,保证了代码的正确性和灵活性。同时,这样的测试也有助于理解和学习Spring IOC的工作机制,提升对Spring框架的理解。

    IOC和AOP深刻理解基础代码测试

    在Java Web开发中,IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)是两个至关重要的概念,它们极大地提升了代码的灵活性和可维护性。Spring框架是实现这两种设计模式的...

    spring ioc+mvc代码

    本文将通过分析并实现一个简化版的Spring IOC+MVC框架,帮助读者深入理解这两个核心概念以及Spring的工作原理。 一、Spring IOC(Inversion of Control)——控制反转 控制反转,简称IOC,是Spring框架的核心特性...

    Ioc接口代码

    通过讨论这些代码,我们可以深入理解IoC的工作原理,学习如何在实际项目中利用IoC来设计更加灵活和可维护的系统。例如,如何编写符合IoC原则的接口,如何配置bean,以及如何进行依赖注入等。这些都对于提升代码质量...

    ioc 源代码

    **IOC(Inversion of Control)源代码解析** IOC,即控制反转,是软件设计模式中的一种,它在面向对象编程中扮演着重要角色。在Java应用中,Spring框架是实现IOC的典型代表。通过IOC,应用程序的控制权从具体的类...

    Ioc示例代码,C#代码编写.rar

    【Ioc示例代码,C#代码编写】 在软件开发中,依赖注入(Dependency Injection,简称DI)是一种设计...C#中的Ioc代码示例提供了很好的实践指导,可以帮助开发者更好地理解和应用这一模式,从而提升代码质量和可维护性。

    IOC控制反转代码,bilibili配套文件

    IOC控制反转代码,bilibili配套文件 IOC(Inversion of Control,控制反转)是 Spring 框架的核心机制之一,它是一个用于创建和管理对象的容器。控制反转是将对象的创建进行反转,常规情况下,对象都是开发者手动...

    Java IOC及反射api代码参考实例

    Java IOC(Inversion of Control,控制反转)是面向对象编程中的一个重要概念,它将对象的创建和管理的权利从代码本身转移到一个外部容器,通常被称为IoC容器。这使得应用程序的组件之间解耦,提高了可测试性和灵活...

    Spring源代码解析(一):IOC容器.doc

    Spring框架的IOC(Inversion of Control,控制反转)容器是其核心...通过源代码阅读,我们可以看到Spring如何优雅地将这些复杂的概念转化为可扩展和灵活的代码,从而更好地利用它来构建高效且松耦合的Java应用程序。

    利用Castle框架中IOC技术

    依赖注入(Dependency Injection,DI)是IOC的一种实现形式,它允许开发者声明对象对其他对象的依赖,而不必在代码中直接实例化。这降低了对象之间的耦合度,使得系统更易于测试、扩展和维护。 在Castle框架中,...

    IOC控制反转在代码中体现.

    ### IOC控制反转在代码中的体现 #### 一、IOC(Inversion of Control)概念解析 IOC,即控制反转,是一种设计思想,在Java开发领域中,它主要被用来消除程序之间的依赖性,使得类的设计更加灵活。传统的编程模式下...

    利用反射自实现IOC容器

    在本项目中,我们通过“利用反射自实现IOC容器”来探讨如何构建一个简单的DI框架,以理解其核心概念和工作原理。 首先,我们需要了解什么是DOM4J。DOM4J是一个Java库,用于处理XML文档,它提供了丰富的API,可以...

    spring-IOC代码

    在Java开发领域,Spring框架因其强大的功能和灵活性而备受推崇,其中的核心概念就是IOC(Inversion of Control,控制反转)。本文将深入探讨Spring IOC,以及它如何通过容器来管理和配置应用对象,实现松耦合。 **...

    maven-spring-ioc

    Spring IoC通过XML配置文件实现了对象的实例化和依赖注入,有效地降低了对象间的耦合,提高了代码的可读性和可维护性。理解并熟练运用Spring的IoC机制是成为一名优秀的Java开发者的关键步骤之一。在实际项目中,结合...

    Spring IOC和AOP代码与笔记整理

    2. **依赖注入(DI,Dependency Injection)**:是IOC的实现方式,通过setter方法、构造器或接口的实现来注入依赖对象,使得对象之间的耦合度降低,增强了代码的可测试性和可维护性。 3. **Spring容器**:有...

    利用Java的反射与代理实现IOC模式

    IOC模式是一种设计模式,它将对象的创建和依赖关系的管理从代码中分离出来,使系统更加灵活、可维护和可测试。在这个主题中,我们将深入探讨Java反射和动态代理如何帮助我们实现IOC。 首先,让我们理解Java反射。...

    Spring5 框架 ---- IOC容器 ---- 代码

    Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- ...

Global site tag (gtag.js) - Google Analytics