以前写了一个数据采集系统,由于时间紧,以前概念模糊,没有考虑到不同数据库之间的字段映射关系。现在这个系统需要进行全省推广,所以就必须要改造这部分代码。
按照以前的想法,改造的时候肯定需要修改许多代码,但是仔细一想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>
分享到:
相关推荐
在这个示例源代码中,我们可以看到多个Java类和一个bean.xml配置文件,这些都是实现Spring IOC的关键组成部分。 首先,让我们了解一下什么是控制反转(IOC)。在传统的程序设计中,对象通常自行创建其依赖项,但在...
在这个最新的IOC代码例子中,我们将深入探讨如何在Java项目中实现IoC。 首先,创建一个空的Java工程是开始任何编程项目的基础步骤。这通常涉及到使用IDE(如Eclipse, IntelliJ IDEA等)来创建一个新的项目,设置好...
**IOC容器原理与实现** IOC(Inversion of Control),即控制反转,是软件设计模式中的一种核心概念。在Java开发中,Spring框架是最为著名的实现IOC的库。...通过实践代码`iocDemo`,我们可以更深入地理解这些概念。
Spring IOC,全称...通过`TestSpringIoc`的测试,我们可以确保Spring IOC的配置和使用符合预期,保证了代码的正确性和灵活性。同时,这样的测试也有助于理解和学习Spring IOC的工作机制,提升对Spring框架的理解。
在Java Web开发中,IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)是两个至关重要的概念,它们极大地提升了代码的灵活性和可维护性。Spring框架是实现这两种设计模式的...
本文将通过分析并实现一个简化版的Spring IOC+MVC框架,帮助读者深入理解这两个核心概念以及Spring的工作原理。 一、Spring IOC(Inversion of Control)——控制反转 控制反转,简称IOC,是Spring框架的核心特性...
通过讨论这些代码,我们可以深入理解IoC的工作原理,学习如何在实际项目中利用IoC来设计更加灵活和可维护的系统。例如,如何编写符合IoC原则的接口,如何配置bean,以及如何进行依赖注入等。这些都对于提升代码质量...
**IOC(Inversion of Control)源代码解析** IOC,即控制反转,是软件设计模式中的一种,它在面向对象编程中扮演着重要角色。在Java应用中,Spring框架是实现IOC的典型代表。通过IOC,应用程序的控制权从具体的类...
【Ioc示例代码,C#代码编写】 在软件开发中,依赖注入(Dependency Injection,简称DI)是一种设计...C#中的Ioc代码示例提供了很好的实践指导,可以帮助开发者更好地理解和应用这一模式,从而提升代码质量和可维护性。
IOC控制反转代码,bilibili配套文件 IOC(Inversion of Control,控制反转)是 Spring 框架的核心机制之一,它是一个用于创建和管理对象的容器。控制反转是将对象的创建进行反转,常规情况下,对象都是开发者手动...
Java IOC(Inversion of Control,控制反转)是面向对象编程中的一个重要概念,它将对象的创建和管理的权利从代码本身转移到一个外部容器,通常被称为IoC容器。这使得应用程序的组件之间解耦,提高了可测试性和灵活...
Spring框架的IOC(Inversion of Control,控制反转)容器是其核心...通过源代码阅读,我们可以看到Spring如何优雅地将这些复杂的概念转化为可扩展和灵活的代码,从而更好地利用它来构建高效且松耦合的Java应用程序。
依赖注入(Dependency Injection,DI)是IOC的一种实现形式,它允许开发者声明对象对其他对象的依赖,而不必在代码中直接实例化。这降低了对象之间的耦合度,使得系统更易于测试、扩展和维护。 在Castle框架中,...
### IOC控制反转在代码中的体现 #### 一、IOC(Inversion of Control)概念解析 IOC,即控制反转,是一种设计思想,在Java开发领域中,它主要被用来消除程序之间的依赖性,使得类的设计更加灵活。传统的编程模式下...
在本项目中,我们通过“利用反射自实现IOC容器”来探讨如何构建一个简单的DI框架,以理解其核心概念和工作原理。 首先,我们需要了解什么是DOM4J。DOM4J是一个Java库,用于处理XML文档,它提供了丰富的API,可以...
在Java开发领域,Spring框架因其强大的功能和灵活性而备受推崇,其中的核心概念就是IOC(Inversion of Control,控制反转)。本文将深入探讨Spring IOC,以及它如何通过容器来管理和配置应用对象,实现松耦合。 **...
Spring IoC通过XML配置文件实现了对象的实例化和依赖注入,有效地降低了对象间的耦合,提高了代码的可读性和可维护性。理解并熟练运用Spring的IoC机制是成为一名优秀的Java开发者的关键步骤之一。在实际项目中,结合...
2. **依赖注入(DI,Dependency Injection)**:是IOC的实现方式,通过setter方法、构造器或接口的实现来注入依赖对象,使得对象之间的耦合度降低,增强了代码的可测试性和可维护性。 3. **Spring容器**:有...
IOC模式是一种设计模式,它将对象的创建和依赖关系的管理从代码中分离出来,使系统更加灵活、可维护和可测试。在这个主题中,我们将深入探讨Java反射和动态代理如何帮助我们实现IOC。 首先,让我们理解Java反射。...
Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- ...