精华内容
下载资源
问答
  • 修改微服务中配置文件

    千次阅读 2017-03-12 20:36:06
    最近用spring boot 开发微服务,应该最后都是打成jar包,配置文件在jar包里面,要修改配置文件不太好修改,我就了个页面对配置文件内容进行修改。  简要介绍一下流程:  1.将配置文件内容取出来,存放起来  2....


    最近用spring boot 开发微服务,应该最后都是打成jar包,配置文件在jar包里面,要修改配置文件不太好修改,我就弄了个页面对配置文件内容进行修改。

             简要介绍一下流程:

             1.将配置文件内容取出来,存放起来

             2.写一个controller层供页面调用

             3.将内容在页面展示出来

             4.将修改内容写回配置文件

             具体流程

             1.假设我们已经建好了一个spring boot工程。

         2.写一个对properties操作的公共类,获取properties里面所有内容

     public static List
        
         > loadAllProperty(){
            /*构建返回值*/
            List
         
          
           > propertyList = new ArrayList
           
            
             >(); /*将properties里面值都取出来并且遍历*/ Iterator propertyIterator = PROPERTY.entrySet().iterator(); if(propertyIterator.hasNext()){ Map.Entry propertyEntry = (Map.Entry)propertyIterator.next(); Map
             
               propertyMap = new HashMap
              
               (); propertyMap.put("key",propertyEntry.getKey()); propertyMap.put("value",propertyEntry.getValue()); propertyList.add(propertyMap); } return propertyList; }
              
             
            
          
        

    3.写一个可以被访问的controller,提供请求路径,返回所有内容

     @RequestMapping(value = "/loadAllProperty",method = RequestMethod.GET)
        public BaseResult loadAllProperty(){
            BaseResult result = new BaseResult();
            try{
                List
         
          >  propertyList = PropertyUtil.loadAllProperty();
                result.setCode(Constants.SUCCESS);
                result.setObj(propertyList);
            }catch(Exception e){
                e.printStackTrace();
            }
            return result;
        }
         
    4.写个页面,将内容展示出来
    页面:
    
         
    keyvalue
    {{property.key}}
    js:
    <script>
                var myApp=angular.module('myApp',[]);
                myApp.controller('myController',function($scope,$http){
                   $scope.init=function(){
                   $http({
                        url:'./loadAllProperty',
                        method:'GET'
                    }).then(function(result){
                        /* data,header,config,status*/
                        if(result.data.code==200){
                             $scope.propertyList = result.data.obj;
                        }else{
                            console.log(result.data.code);
                        }
                    }).catch(function(result){
                          console.log("error");
                    });
                }
    
                $scope.changeProperty=function(){
                   $http({
                        url:'./changeProperty',
                        method:'POST',
                        data:{
                            list:$scope.propertyList
                        }
                    }).then(function(result){
                        /* data,header,config,status*/
                        if(result.data.code==200){
                             $scope.init();
                        }else{
                            console.log(result.data.code);
                        }
                    }).catch(function(result){
                          console.log("error");
                    });
                }
                $scope.init();
                });
            </script>
    5.在写一个请求,接受修改后peoprerties
    @RequestMapping(value = "/changeProperty",method = RequestMethod.POST)
        @ResponseBody
        public BaseResult changeProperty(@RequestBody Map
         
           map){
            BaseResult result = new BaseResult();
            try{
                PropertyUtil.changeProperty((List
          
           
            >) map.get("list"));
                result.setCode(Constants.SUCCESS);
            }catch(Exception e){
                e.printStackTrace();
            }
            return result;
        }
           
         
    6.在properties工具类里面在添加一个将内容写入到properties里面的方法
    public static void changeProperty(List
          
           > propertyList){
            try{
                if(propertyList!=null&&propertyList.size()!=0){
                    for(Map
           
             propertyMap:propertyList){
                        PROPERTY.setProperty(String.valueOf(propertyMap.get("key")),String.valueOf(propertyMap.get("value")));
                    }
                }
                OutputStream ops = new FileOutputStream(PropertyUtil.class.getResource(CONFIGPATH).getPath());
                PROPERTY.store(ops,null);
                ops.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
           
          
    注意:在调用之后很多会去src下看properties,发现文件没有被修改,其实修改的在classes下面。

    展开全文
  • 使用 sed 修改配置文件

    千次阅读 2010-05-11 10:12:00
    最近写一些Debian包安装脚本。由于希望安装时能提示用户输入一些初始配置... 一个典型的例子是,在配置文件修改一个子网IP。在这个配置文件中,本人定义的子网IP格式是 网段IP加掩码位数:如 192.168.10.4/26 setu

    最近写一些Debian包安装脚本。由于希望安装时能提示用户输入一些初始配置参数,用sed倒来倒去,终于弄出来。

     

    sed功能强大,但参数繁多,一天不用就忘。还是找个地方记下来,一来给大家分享,二来这里比记在本子上强。

     

    一个典型的例子是,在配置文件中修改一个子网IP。在这个配置文件中,本人定义的子网IP格式是 网段IP加掩码位数:

    如 192.168.10.4/26

     

     


     

     

    还有一个进一步的例子,就是在参数是多个值用分号(;)隔开的,需要遍历每个值做事情。下面就是对类似storage_root=/path1;path2;/path3;/path4 进行文件遍历检查文件完整性。

     

    分两步,一是取出参数“/path1;path2;/path3;/path4”,二是将分号替换成空格,然后用for循环:

     

     

     

     


     

     

    另外一个困扰我很久的问题是分割符转义。好比上面的例子,如果要将带有“/“的字符串替换到文件中,总是出错。比如:

    将  storage_root=/path1;/path2;/path3;/path4  替换到文件中的 storage_root 的设置。

     

    后来经高人提醒,原来sed可以使用其他分割符号的,如下面的命令,就轻松搞定了:

     

     

    展开全文
  • *.ini、*.properties、*.xml都是配置文件,这些配置文件往往被奉若神明,自从我们接触电脑的那一天开始,就被人警告不要乱他们。其实他们与java的HashMap结构是一样的,都是一个存放key-value对的容器,只是配置...

    *.ini、*.properties、*.xml都是配置文件,这些配置文件往往被奉若神明,自从我们接触电脑的那一天开始,就被人警告不要乱弄他们。其实他们与java的HashMap结构是一样的,都是一个存放key-value对的容器,只是配置文件那些是属性与属性值的key-value对罢了,HashMap不懂是啥的同志可以参考我之前写的《【Java】Java中的Collections类——Java中升级版的数据结构》(点击打开链接),但是为何不能乱碰它呢?因为这些key-valueyi对一般是记录着程序运行的参数,而且很多是初始化的参数,一般这些参数都是自程序的开始运行,也就是程序的出生到程序被关闭,也就是程序死亡都需要使用的定值。正如我们每一个人的名字、性别、出生地这些属性一样,从我们出生到死亡都要不停地用。

    配置文件主要有三种后缀名,在Windows系统中是*.ini,*.ini在很多win32程序大家都见过了,这东西还被贴上“系统文件”的标签,删除或者什么的会被Windows警告,其实它只不过是配置文件似的,阅读完本文之后,你就会觉得配置文件就是那回事。配置文件在Linux系统或者在一些Java工程中的是则是*.properties,最常见的就是现在很火的SSH的国际化文件,就是以配置文件为国际化的发起点的。

    其实*.ini与*.properties是完全一样的东西,正如*.dll与*.jar的对应关系一样,都是win32程序或者java程序必要的运行库。*.dll没有写过大型win32程序的人可能不熟悉,但是*.jar大家肯定知道,很多java程序的编写必须放进一些*.jar包使得开发更加便捷,然后你的java工程运行必须带着这些*.jar包才能运行。大家也可以观察到大部分win32程序在目录下都存在*.dll,那是因为这些win32在编写时候就用到这些*.dll包啊!相当与java的插件。

    此外还有一种新型的配置文件.xml,这东西相信大家也不陌生,在Jsp工程的总配置文件web.xml你弄不好,就别想启动工程。为什么说*.xml是新型的配置文件,还有一些*.xml是新时代的产物的观点呢?那是因为*.ini,*.properties是不支持中文的,而*.xml是支持中文的。

    在Java中操作配置文件非常简单,正如操作一个HashMap一样简单,配置文件类Properties同样在java.util.*包里面,同时涉及文件的读写操作,所以同样需要java.io.*,对于Java输入输出不了解的读者,可以参考我之前写的《【Java】输入与输出与JDK1.5之后的新型字符串StringBuilder》(点击打开链接)。见如下的程序:

    import java.io.*;
    import java.util.*;
    
    public class propertiesTest {
    	public static void main(String[] args) throws IOException {
    		// 同样先初始化Properties类
    		// 初始化之后在内存就出现一个保存key-value对的properties对象
    		Properties properties = new Properties();
    		// 之后设置三个属性,可以与HashMap的put方法做类比,同样是在操作key-value对
    		// 故意设置一个中文的value来说明*.ini,*.properties与*.xml之间对中文的支持
    		properties.setProperty("username", "aaa");
    		properties.setProperty("chinese", "中文");
    		properties.setProperty("password", "123");
    		// 此时,内存中的properties对象便有三个key-value对
    		// 利用store方法与storeToXML方法把内存中的properties对象记录的属性保存到磁盘中的配置文件
    		// 方法仅支持文件输出流对象,单单一个文件对象File是行不通的
    		// 第二个参数是此配置文件的注释
    		properties.store(new FileOutputStream("c:\\a.ini"), "中文");
    		properties.store(new FileOutputStream("c:\\a.properties"), "comment");
    		properties.storeToXML(new FileOutputStream("c:\\a.xml"), "注释");
    		// 清空properties对象
    		properties = new Properties();
    		// 再把c:\a.ini里面存放的属性读取进来
    		properties.load(new FileInputStream("c:\\a.ini"));
    		// 修改password属性的值变成456
    		properties.put("password", "456");
    		// 打印此时内存中的properties对象
    		System.out.println(properties);
    		// 如下方法,可以取得内存中的properties对象中的username的属性值
    		System.out.println(properties.getProperty("username"));
    		// 再清空properties对象,读取c:\a.xml配置文件所存储的属性,注意读*.xml方法是不同
    		properties = new Properties();
    		properties.loadFromXML(new FileInputStream("c:\\a.xml"));
    		// 打印内存中的属性
    		System.out.println(properties);
    	}
    }
    

    程序运行之后,在控制台会输出如下东西:


    在C盘会得到三个配置文件a.ini,au.properties与a.xml,


    a.ini与a.properties的内容除注释之外,其余部分都是一样的,以下是a.ini的内容,


    可以看到,这个a.ini这种旧式的配置文件根本就不支持中文,Java中Properties类的store方法只能把中文帮你转码保存,注意与运行结果比对,load方法并不读取注释,使用load把这些属性读回来程序之后无需转码就显示正常。因此struts国际化的时候可以利用Properties类去转码与输出,根本就不用用到什么工具,Java本来就有相应的方法。作为程序的配置文件一般是保存重要的信息的,并不需要给用户看的,因此,属性值一般只是一些数字之类的。

    而a.xml的内容则非常丰富,具体如下:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    <properties>
    <comment>注释</comment>
    <entry key="password">123</entry>
    <entry key="chinese">中文</entry>
    <entry key="username">aaa</entry>
    </properties>
    
    但Properties对象的loadFromXML方法的读取仅仅是读取其中的key-value的程序对,对比运行结果,

    你可以看到,都是以属性与属性值的key-value对来读取的。

    通过上面对配置文件概念的解释与Java对配置文件的操作,估计大家已经基本掌握*.ini、*.properties、*.xml这些配置文件到底是啥,也可以看到这些配置文件的基本结构了。

    展开全文
  • Springboot引用外部配置文件

    万次阅读 热门讨论 2017-08-25 17:24:22
    现在的项目越来越多的都是打包成jar运行尤其是springboot项目,这时候配置文件如果一直放在项目中,每次进行简单的修改时总会有些不方便,这里我们看下打包成jar之后,从外部配置文件中读取配置信息。首先想到的是...

    现在的项目越来越多的都是打包成jar运行尤其是springboot项目,这时候配置文件如果一直放在项目中,每次进行简单的修改时总会有些不方便,这里我们看下打包成jar之后,从外部配置文件中读取配置信息。

    首先想到的是通过java代码读取外边某个路径下的文件,但是开始做之后发现好多问题。后来又找其它解决方案,正好搜到一种简单的解决方式:

    java -jar demo.jar --Dspring.config.location=myapplication.properties

    这样就可以通过@value注解读取myapplication.properties中的配置信息了。(上边的大写D好像可以不写的)

    后来想着直接把spring.config.location写到application.properties配置文件中,然后指定一个固定的外部配置文件来获取信息,这样启动的时候就可以不用加最后一行了。

    spring.config.location=C:\\Users\\Administrator\\git\\Display\\host.properties

    可是这种方式是行不通的,比如我配置文件中有下面信息:

    myname=hellopangkunkun

    代码:

        @Value("${myname}")
        private String name;

    我在启动的时候直接报这个地方的错误,说是无法找到myname,导致整个项目出异常。

    后来搜了下文章,对比官网文档,又得到了一些信息:

    24.3 Application property files
    SpringApplication will load properties from application.properties files in the following locations and add them to the Spring Environment:
    
    A /config subdirectory of the current directory.
    The current directory
    A classpath /config package
    The classpath root
    The list is ordered by precedence (properties defined in locations higher in the list override those defined in lower locations).

    这里说了四种方式可以把配置文件放到外部的。
    第一种是在jar包的同一目录下建一个config文件夹,然后把配置文件放到这个文件夹下;
    第二种是直接把配置文件放到jar包的同级目录;
    第三种在classpath下建一个config文件夹,然后把配置文件放进去;
    第四种是在classpath下直接放配置文件。

    这四种方式的优先级是从一到四一次降低的。

    注: 一二两种方案其实不是jar包的同级目录,而是(执行启动指令的)同级目录。为了便于理解我把上面的当前目录说成jar包的同级目录,这种说法并不对。如果是刚开始接触或者调试这块,还是在jar包同级目录方便。

    由于我们是要从外部读取文件,所以直接说前两种。

    看下文件目录结构:
    这里写图片描述

    这里的application.properties是我们的配置文件,config是创建的另外一个目录,放的也是application.properties。

    Display-1.0-SNAPSHOT.jar中可以包含application.properties配置文件也可以不包含。

    为了验证可以在config中设置myname=name1,jar同级目录中设置myname=name2,如果jar中包含配置文件,将其中设置成myname=name3。

    直接使用指令启动:

    java -jar Display-1.0-SNAPSHOT.jar

    之后验证可得知,我们通过@Value(“${myname}”)获取到的myname的值是name1,把config下的配置文件删除后获取的结果是name2,都删除后才会获取jar包中配置文件的数据name3。

    另外如果我们想要想配置测试、开发、生产环境一样使用另外一个配置文件怎么来实现呢?

    下面继续,我把application.properties的信息修改如下:

    spring.profiles.active=dev,host

    配置文件目录结构:
    这里写图片描述
    我又新增了一个名为application-host.properties的配置文件,同理也可以把这个文件考出来放到jar包外面,同级目录或者config下。

    这样项目启动之后dev配置文件和host配置文件都会生效。
    这里写图片描述
    这里为了突出其他的配置文件我只把host的拷出来了,dev的还是在jar包里,application.properties配置文件放在jar中也一样,我们需要的主要是host的配置文件。

    这样每次修改的时候只需要修改配置文件信息,然后重启项目就好,不需要重新打包。

    如果想要只修改配置文件,不重启项目就能生效,可以考虑用java来读取配置文件中的数据,把它当作一个普通文件来读取,或者写到其他数据库中也行。上面这些方案已经能够满足我的需求了,所以其他的不在做了。

    最后提个问题,也是我没弄明白的,希望知道的各位能够给个答案:

    我把spring.config.location这个配置写到配置文件中为什么没有生效?

    展开全文
  • Ubuntu通过修改配置文件进行网络配置 2017年07月25日 17:42:36致远OS阅读数:52298 ubuntu系统进行网络配置有的时候用图形界面(NetworkManager)不起作用(另一种配置方式文本界面:/etc/network/interfaces),这种...
  • 于是写了一个小脚本以特定频率来监控常见系统配置文件,如发生变化,则邮件通知管理员。这里小发散一下,笔者习惯在内网单独一台server,给予其免秘钥登录所有服务器额权限,以便批量管理server。并且统计好一个...
  • 前言:今天想把代码从SVN迁移到git上,然后就找了篇在Windows下搭建git服务器的教程开始,但是修改配置文件后一直没法启动服务,折腾好久才找到解决办法。问题出在以管理员身份运行 gitblit.cmd后cmd窗口一闪而...
  • postfix配置文件

    2012-07-13 15:38:15
    两台虚拟机上postfix的配置,A向B mailrelay,A将发的邮件直接转发给B 无数次修改弄出来的 可以参考下,只有main.cf配置,其他的要自己做做
  • QT配置文件入门

    千次阅读 2013-09-28 11:52:30
    QT配置文件入门 学习QT才两个月,没什么经验,一点点小心得。...用了一段时间的Qt了,对其.pro的配置文件比较感兴趣,就像以前花了大把时间Ant一样。以下内容主要是对qmake配置文件做一点简要
  • 1.修改hbase-env.sh export JAVA_HOME=/usr/java/jdk1.7.0_55 告诉hbase使用外部的zk export HBASE_MANAGES_ZK=false 2.修改hbase-site.xml hbase.rootdir hdfs://hadoop01(自己的主机名):9000/hbase hbase....
  • Nodejs读写json配置文件

    2017-12-01 03:50:06
    需求是:在nodejs中读取并能修改本地的json配置文件。比如:配置文件 ``` { "para1":"aaa", "para2":"bbb", "para3":"ccc" } ``` 可以个类似这样的代码,就能改变这个json文件 ``` var config = require('....
  • Linux网卡配置文件 参数详解

    千次阅读 2018-06-04 07:20:02
    最近这段时间了好十来次虚拟机网络了ubuntu,centos,rhat7各种折腾,其实把网上各种命令行下的攻略折腾最后关键无非都是对/etc/sysconfig/network-scripts目录下的那个网卡配置文件(ifcfg-网卡名),与其零零散...
  • 修改CAS配置文件 修改cas的WEB-INF/cas.properties server.name=http://localhost: 8087   1.4.2去除https认证 CAS默认使用的是HTTPS协议,如果使用HTTPS协议需要SSL安全证书(需向特定的...
  • 4.修改构建配置文件(CMakeLists.txt)

    千次阅读 2018-11-26 11:37:53
    ROS的构建系统catkin基本上使用CMake,并在功能包目录中的CMakeLists.txt文件中描述构建...构建配置文件(CMakeLists.txt)中的每一项如下所示。 1.操作系统中安装的cmake的最低版本。由于它目前被指定为版本2.8....
  • iOS开发中,遇到换电脑情况,大部分证书和配置文件都需要重新,证书可以从官网上下,配置文件没有过期和没有删除的情况下,也能从官网下载,有时候就想用老的配置文件,官网上也没有了。 导出指定的单个配置文件 ...
  • docker容器中配置文件修改错误,导致容器无法启动 问题 在elasticsearch加入中文分词器ik时,在容器中配置修改错误,导致elasticsearch启动不了 解决方案 [root@blue elk]# cd /var/lib/docker/overlay2/ [root@...
  • 原来的项目中域名是打包到项目里面的,打包后不能动态配置,只能通过不同的指令打包来切换域名,每天都在测试域名和正式域名来回摩擦,后台大佬说你们可以生成一个配置文件这样就不用频繁打包了直接修改配置文件就好...
  • ubuntu的配置文件

    千次阅读 2013-08-07 11:48:33
    ubuntu的配置文件 是 ~/.gconf 我是把终端挂了, 只能再桌面系统下找到 ~/.gconf 下的相应文件 修改后就恢复到原来状态。
  • 全透明显示动态桌面时间,可调整配置文件设置时间字体大小位置,我花了3天才好,字体边缘模糊问题都已解决,绝对经典
  • 修改qq的自定义图片的配置文件

    千次阅读 2006-08-01 21:42:00
    jaja最近没事就爱搞点小名堂。在公司的qq收藏了几张8错的表情,家里没有,就想回家。jaja就copy了%QQ_Home%/qqnum file/CustomFace/自定义的qq表情组名字 的...jaja着急了,回到上个目录一看,嘿嘿,果然有个配置文件
  • 详细SpringBoot教程之配置文件(一)

    万次阅读 多人点赞 2020-02-22 18:40:29
    我这里打算写一个SpringBoot系列的相关博文,目标呢是想让看了这一系列博文的同学呢,能够对SpringBoot略窥门径,这一系列的博文初步都定下来包括SpringBoot介绍、入门、配置、日志相关、web开发、数据访问、结合...
  • 【配置详解】Quartz配置文件详解

    千次阅读 2018-10-15 11:21:00
    我们通常是通过quartz.properties属性配置文件(默认情况下均使用该文件)结合StdSchedulerFactory 来使用Quartz的。StdSchedulerFactory 会加载属性配置文件并实例化一个Scheduler。   默认情况下,Quartz会加载...
  • Ubuntu vim配置文件

    千次阅读 2010-10-31 00:06:00
    收藏 安装Ubuntu8.04beta版后,我的vim变得“无精打采”了,主要是没有在配置文件中设置属性的缘故,我的Ubuntu6.06是david帮我我配置的,超快,我还没看清就完了,今天自己试试看吧,于是上网搜索了...
  • quartz.properties配置文件详解

    千次阅读 2019-05-22 14:50:30
    我们通常是通过quartz.properties属性配置文件(默认情况下均使用该文件)结合StdSchedulerFactory来使用Quartz的。StdSchedulerFactory会加载属性配置文件并实例化一个Scheduler。 默认情况下,Quartz会加载...
  • eclipse将自定义的配置文件导出

    千次阅读 2018-05-24 11:01:35
    转载于:https://blog.csdn.net/huanghui167/article/details/8115847关于eclipse配置文件导出问题: eclipse的默认配置一般不能满足我们的要求,我们一般会修改一些配置,如字体、背景颜色、快捷键及一些template...
  • 这篇文章将继续讲述,SpringIOC容器的定义形式——xml配置文件,将清楚两个疑问: 1. Spring xml配置文件的作用。(与IOC思想一脉相承的) 2. 如果定义Bean以及Bean之间的依赖关系。(只说明最简单的方式,关于这...
  • 在项目开发中我们常常会进行业务接口对接的操作。经常需要在本地接口地址、测试服务器接口地址到最后的正式的接口地址间来回更换调试推进项目上线。...1.新建config.js 统一配置文件 2.config.j...
  • 我们知道DHCP的配置文件是靠模板文件内容复制过来的,文件的内容104行,绝大部分是注释。一般来说,Linux很多rpm包安装的服务都是这样,安装完成后,把模板文件内容复制过来,做很少的修改,基本功能就搭建完成。 一...
  • 后来项目完成了,打包的时候要求,要求将项目中的配置文件外移,方便修改配置文件。花了我两天多的时间才明白,于是记录下,以防以后再遇到类似问题。配置文件位于classpath下 使用spring的org.sp...
  • Mycat之——配置文件schema.xml

    万次阅读 2016-11-28 22:42:15
    今天,给大家带来一篇数据库中间件——Mycat的文章,Schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource。懂这些配置,是正确使用MyCat的前提。这里就一层层对...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 94,080
精华内容 37,632
关键字:

修改配置文件怎么弄