java 配置生成工厂类的封装

    java中关于properties文件(k-v形式描述)的应用是非常多的,java自带的Properties类实现Map接口也提供了一个很好的访问接口。

xxx.properties文件
requestinfo.title=Request Information Example
requestinfo.label.method=Method
requestinfo.label.requesturi=url
requestinfo.label.protocol=http,ftp,smtp
requestinfo.label.pathinfo=/
requestinfo.label.remoteaddr=127.0.0.1
requestinfo.label.isTimeout=false
requestinfo.label.minSpeed=1.4
这种就是以 key = value存在的配置文件。

我们一般如果通过java自带的Properties类读取的话,是用下面的方式

InputStream in = lnew BufferedInputStream(new FileInputStream(name));
Properties p = new Properties();
p.load(in);
String value = p.getProperty(key);
我们通过这种方式来打开操作properties,尽管已经够简单了,但是觉得还是有点不够。


通过查一些资料,发觉apache的commons项目有个关于configuration的工具包。

<dependency>
	<groupId>commons-configuration</groupId>
	<artifactId>commons-configuration</artifactId>
	<version>1.10</version>
</dependency>

这个工具包提供了很多关于配置读取的封装,我们这里只看一下关于properties文件的读取。

    import org.apache.commons.configuration.Configuration;  
    import org.apache.commons.configuration.PropertiesConfiguration;  
      
    Configuration config = new PropertiesConfiguration( "xxx.properties" );  
    float minSpeed = config.getFloat("minSpeed"));  
    List protocol= config.getList("requestinfo.label.protocol")); //自动读取为list,以,分开    
    boolean isTimeout= config.getBoolean("requestinfo.label.isTimeout");  
简单明了的操作,感觉比java自带的properties类要更方便一些。


接下来是自己写的一个简单的工厂类,根据properties的classpath内路径还有文件名获得配置文件对象。

import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;

import java.net.URL;
import java.util.HashMap;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * User: lsz
 * Date: 14-4-5
 * Time: 下午10:06
 * 根据名字获得对应的配置文件
 */
public class ConfigurationFactory {
    private static String basepath = "/";
    private static Map<String ,Configuration> factory = new HashMap<String, Configuration>();
    private ConfigurationFactory(){}
    public static Configuration getConfiguration(String name,String path) throws ConfigurationException {
        Configuration configuration = factory.get(name);
        if(configuration == null){
            synchronized (basepath){
                if(configuration == null){
                    URL configURL = Configuration.class.getResource( path);
                    configuration = new PropertiesConfiguration(configURL.getPath()+name);
                    factory.put(name,configuration);
                }
            }
        }
        return configuration;
    }
    public static Configuration getConfiguration(String name) throws ConfigurationException {
        return getConfiguration(name,basepath);
    }
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java IEC 103代码生成是指使用Java语言生成IEC 103通信协议的代码。IEC 103通信协议是用于电力自动化系统中的数据交换协议,它定义了电力系统设备之间的通信规则和数据格式。 在生成Java IEC 103代码之前,需要先理解IEC 103通信协议的工作原理和数据结构。然后,可以使用Java编程语言结合相关的库和工具来生成代码。 生成Java IEC 103代码的过程包括以下几个步骤: 1. 定义数据结构:根据IEC 103通信协议的数据结构,使用Java和对象来表示通信报文和数据项。可以根据需要创建不同的来表示不同的数据型,例如遥信、遥测等。 2. 实现通信功能:根据IEC 103通信协议的规定,使用Java编程语言来实现通信功能,包括建立连接、发送和接收数据等操作。可以使用Java提供的Socket来进行网络通信,或者使用相关的库来实现协议的细节。 3. 生成协议报文:根据IEC 103通信协议规定的报文格式,使用Java代码来生成和解析通信报文。可以使用Java提供的字符串操作功能来拼接报文,或者使用相关的库来处理报文的编码和解码。 4. 实现数据处理逻辑:根据具体的应用需求,在Java代码中实现对接收到的数据进行处理和解析的逻辑。可以使用条件判断、循环等结构来处理数据,根据需要将数据存储到数据库中或进行其他操作。 通过以上步骤,就可以生成Java实现的IEC 103通信协议的代码。值得注意的是,需要根据具体的应用需求来定制代码,可能需要进行一定的修改和调试。另外,还需要根据实际情况进行网络和设备的配置,以确保通信正常运行。 总体而言,通过使用Java编程语言和相关的库和工具,可以实现IEC 103通信协议的代码生成,从而在电力自动化系统中实现数据交换和通信功能。 ### 回答2: IEC 103是一种用于远程监控和控制的通信协议,很多工控系统使用该协议进行设备间的数据交换。在Java生成IEC 103协议的代码可以通过以下几个步骤实现。 第一步,需要引入相应的库或框架。可以使用Java的Socket编程来实现与IEC 103协议服务器的通信。可以使用Java自带的Socket,或者使用第三方库,如Apache的MINA框架来进行更高层次的抽象。 第二步,需要解析IEC 103协议的数据格式。IEC 103协议使用二进制数据进行通信,需要按照协议规定的格式对数据进行解析和封装。可以通过创建相应的Java来表示IEC 103协议中的各种数据型,如ASDU(Application Service Data Unit)、APCI(Application Layer Protocol Control Information)等。 第三步,需要实现与IEC 103协议服务器进行通信的逻辑。可以使用Socket编程来与服务器进行连接,并发送和接收相应的数据。可以根据具体的业务需求来定义相应的数据处理逻辑,如向服务器发送指令、接收服务器返回的数据等。 第四步,可以根据具体的需求对生成的代码进行进一步的优化和封装。可以使用设计模式来提高代码的可复用性和可扩展性,如工厂模式、单例模式等。可以将通信逻辑封装为一个或者一个库,方便在其他项目中进行复用。 总结起来,生成IEC 103协议的代码需要引入相应的库或框架,解析数据格式,实现通信逻辑,并进行进一步的优化和封装Java提供了Socket编程和丰富的库支持,可以方便地实现IEC 103协议的通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值