加载配置文件

摘要:
“);}最后{if(in!

前言:如果我们需要调用某个方法,其中的参数为可更改,我们最好是采用配置文件的方式来写,这样便于管理

比如我在写一个通过SFTP连接服务器的环节

加载配置文件第1张加载配置文件第2张
public class SFTPUtil {
    
    private static Logger log=Logger.getLogger(SFTPUtil.class.getName());
    
    private String host;//服务器连接ip
    private String username;//用户名
    private String password;//密码
    private int port=22;//端口号
    private ChannelSftp sftp=null;
    private Session sshSession=null;
    
    
    public SFTPUtil(String host, String username, String password, int port) {
        this.host = host;
        this.username = username;
        this.password = password;
        this.port = port;
    }


    public SFTPUtil(String host, String username, String password) {
        super();
        this.host = host;
        this.username = username;
        this.password = password;
    }
    
    /**
     *ͨ通过SFTP连接服务器
     */
    public void connect(){
        try {
            JSch jsch=new JSch();
            jsch.getSession(username, host, port);
            //����session
            sshSession=jsch.getSession(username, host, port);
            if(log.isInfoEnabled()){
                log.info("Session created.");
            }
            sshSession.setPassword(password);
            Properties sshConfig=new Properties();
            sshConfig.put("StrictHostKeyChecking", "no");
            sshSession.setConfig(sshConfig);
            sshSession.connect();
            if(log.isInfoEnabled()){
                log.info("Session connected.");
            }
            Channel channel=sshSession.openChannel("sftp");
            channel.connect();
            if(log.isInfoEnabled()){
                log.info("Opening channel.");
            }
            sftp=(ChannelSftp)channel;
            if(log.isInfoEnabled()){
                log.info("Connected to "+host+".");
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
View Code

1.Properties文件

以key-value的形式写入参数

加载配置文件第3张

2.加载properties的工具类

加载配置文件第4张加载配置文件第5张
package com.copote.commons.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class ConfigurableConstants {
    
    public static Log logger = LogFactory.getLog(ConfigurableConstants.class);
    public static Properties p = new Properties();

        /**
         * 静态读入属性文件到Properties p变量中
         */
        public  static  void init() {
            InputStream in = null;
            try {
                in = ConfigurableConstants.class.getClassLoader().getResourceAsStream("config.properties");             
                if (in != null)
                    p.load(in);            
            } catch (IOException e) {
                logger.error("load config.properties into Constants error!");
            }
            finally {
                if (in != null) {
                    try {
                        in.close();
                    } catch (IOException e) {
                        logger.error("close config.properties error!");
                    }
                }
            }
        }

        /**
         * 封装了Properties类的getProperty函数,使p变量对子类透明.
         *
         * @param key          property key.
         * @param defaultValue 当使用property key在properties中取不到值时的默认值.
         */
        public static String getProperty(String key) {
            return p.getProperty(key);
        }
        
        public static void main(String[] args){
            ConfigurableConstants.init();
            System.out.println(ConfigurableConstants.getProperty("host"));
        }
}
View Code

3.调用

加载配置文件第6张


方式2:Springboot项目通过@configurationProperties注解

@Configuration
@ConfigurationProperties(ignoreInvalidFields = false)
@PropertySource("classpath:config.properties")
@Data
@Component
public class PropertiesConfig {
    private String druidUserName;
    private String druidPassword;
    private String druidUrlMapping;
    private String druidAllow;
    private String druidDeny;
    private String druidResetEnable;
}

使用时直接注入即可

@Autowired
private PropertiesConfig config;

免责声明:文章转载自《加载配置文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Qt sprintf_s函数格式化字符串出错PCB 无需解压,直接读取Genesis TGZ指定文件 实现方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Aviator

Aviator简介¶Aviator是一个高性能、轻量级的java语言实现的表达式求值引擎,主要用于各种表达式的动态求值。现在已经有很多开源可用的java表达式求值引擎,为什么还需要Avaitor呢? Aviator的设计目标是轻量级和高性能,相比于Groovy、JRuby的笨重,Aviator非常小,加上依赖包也才450K,不算依赖包的话只有70K;当然,...

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 0

最近遇到一个MySQL连接的问题,远程连接MySQL时遇到“ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 0”错误,如下所示:   [root@DB-Server ~]# mysql -h 10.13....

Spring中RestTemplate的使用方法

一、REST 在互联网中,我们会通过请求url来对网络上的资源做增删改查等动作,这里的请求包含两部分:动词,主要包括增、删、改、查;名词,就是网络中的各种资源。传统的非REST风格的请求方式是把动词和名词全都放在url中。例如,对设备的操作可能是这样的:添加设备:http://test/device/add删除设备:http://test/device/d...

jdk8 新特性stream().map()

1.大写字符串列表 1.1 简单的Java示例将Strings列表转换为大写 TestJava8.java package com.mkyong.java8; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.uti...

[PDFBox]后台操作pdf的工具类

PDFBox是Apache下的一个操作pdf的类库。其也提供了一个命令行的工具,也提供了java调用的第三方类库。 下载地址:https://pdfbox.apache.org/ 下面的实验基于JDK8+pdfbox-2.0.13.jar+pdfbox-app-2.0.13.jar(命令行工具库) 1.命令行使用 文档参考:https://pdfbox.a...

php 面试题

1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名  例如: http://www.phpddt.com/abc/de/fg.php?id=1 需要取出 php 或 .php $url = 'http://www.baidu.com/wang/liu/4.php?i=90'; $urlArr = parse_url($url); $ex...