溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

springboot讀取配置文件的三種方式

發(fā)布時(shí)間:2020-05-31 09:19:36 來源:網(wǎng)絡(luò) 閱讀:35752 作者:zcp617504296 欄目:軟件技術(shù)

方式一:

@Configuration

//@PropertySource("classpath:jdbc.properties")

//@PropertySource("classpath:config/jdbc222222.properties")

@PropertySources({@PropertySource("classpath:jdbc.properties"),@PropertySource("classpath:config/jdbc222222.properties")})

public class FileConfig {


}


@Component

public class Dbconfig {


@Value("${db.url}")

private String dbUrl;

@Value("${db.port}")

private Integer dbPort;


@Value("${db.password}")

private String dbPassword;

@Value("${db.username}")

private String dbUserName;

public void show(){

System.out.println(">>>>>>>>>>>Dbconfigz中獲取到的參數(shù)");

System.out.println("dbUrl========="+dbUrl);

System.out.println("dbPort"+ "========="+dbPort);

System.out.println("dbPassword"+ "========="+dbPassword);

System.out.println("dbUserName"+ "========="+dbUserName);

}

}


配置文件的信息,配置文件的名稱是jdbc.properties。路徑是在resources下

db.password=root

db.username=root


data.url=127.0.0.12

data.port=12343

data.name=1233

data.password=root3


測試的主方式是:

public static void main(String[] args) {

ConfigurableApplicationContext context = SpringApplication.run(App.class, args);

context.getBean(Runnable.class).run();

//String property = context.getEnvironment().getProperty("local.ip");

//System.out.println("獲取到的參數(shù)是:"+property);

//context.getBean(UserConfig.class).show();

context.getBean(Dbconfig.class).show();

context.getBean(DataSourceProperties.class).show();

context.close();

}






方式二:通過environment獲取外部的配置信息

@Component

public class UserConfig {


@Autowired

Environment environment;

@Value("${local.port}")

private String localPort;


@Value("${local.port}")

private Integer localPort2;

@Value("${tomcat.port:9090}")

private String tomcatPort;

public void show(){

System.out.println("application.properties中的local.ip的值:"+environment.getProperty("local.ip"));

System.out.println("application.properties中的local.port的值:"+environment.getProperty("local.port"));

System.out.println("application.properties中的local.port的值:"+environment.getProperty("local.port", Integer.class));

System.out.println("application.properties中的name的值:"+environment.getProperty("name"));

System.out.println("application.properties中的app.name的值:"+environment.getProperty("app.name"));

System.out.println("application.properties中的tomcat.port的值:"+environment.getProperty("tomcat.port"));

System.out.println("application.properties中的tomcat.port的值:"+tomcatPort);

}

}


方式三:

@Component

@ConfigurationProperties(prefix="data")

public class DataSourceProperties {

private String url;

private String port;

private String name;

private String password;

public String getUrl() {

return url;

}

public void setUrl(String url) {

this.url = url;

}

public String getPort() {

return port;

}

public void setPort(String port) {

this.port = port;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public void show(){

System.out.println(">>>>>>>>>>>>url"+url);

System.out.println(">>>>>>>>>>>>port"+port);

System.out.println(">>>>>>>>>>>>name"+name);

System.out.println(">>>>>>>>>>>>password"+password);

}

}


總的說明:

 * 兩種方法獲取配置信息中的信息

 * 配置文件的文件名字為application.properties

 * 默認(rèn)的位置在classpath根目錄,或者classpath:/config file:/ file:config/

 * 

 * 默認(rèn)的配置文件名字可以使用 --spring.config.name來指定,只需要指定文件的名字,文件擴(kuò)展名可以省略。

 * 默認(rèn)的配置文件路徑可以使用--spring.config.location來指定,

 * 配置文件需要指定全路徑,包括目錄和文件名字,還可以指定多個(gè),多個(gè)用逗號隔開

 * --spring.config.location=classpath:config/app.properties(如果是文件則file:文件的路徑)

 * 



spring boot 支持獲取數(shù)組,集合的配置

package com.zcp.springstart;


import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;


import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.stereotype.Component;


/**

 * 支持獲取數(shù)組,集合

 * 配置方式為:name[index]=value

 * 在application.properties文件中的寫法:

 * data.url=127.0.0.1

data.port=1234

data.name=123

data.password=root.post

ds.hosts[0]=128.128.128.0

ds.hosts[1]=128.128.128.1

ds.hosts[2]=128.128.128.2

ds.hosts[3]=128.128.128.3

ds.ports[0]=8888

ds.ports[1]=8889

ds.ports[2]=8890

ds.ports[3]=8891

ds.ports[4]=8892

 * <p>Title: TomcatProperties</p>

 * <p>Description: </p>

 * <p>Company: www.itcast.cn</p> 

 * @version 1.0

 */

@Component

@ConfigurationProperties("ds")

public class TomcatProperties {

private List<String> hosts = new ArrayList<>();

private String[] ports;


public String[] getPorts() {

return ports;

}


public void setPorts(String[] ports) {

this.ports = ports;

}


public List<String> getHosts() {

return hosts;

}


public void setHosts(List<String> hosts) {

this.hosts = hosts;

}


@Override

public String toString() {

return "TomcatProperties [hosts=" + hosts + ", ports=" + Arrays.toString(ports) + "]";

}



}




在application.properties文件中的配置信息入下:

data.url=127.0.0.1

data.port=1234

data.name=123

data.password=root.post

ds.hosts[0]=128.128.128.0

ds.hosts[1]=128.128.128.1

ds.hosts[2]=128.128.128.2

ds.hosts[3]=128.128.128.3

ds.ports[0]=8888

ds.ports[1]=8889

ds.ports[2]=8890

ds.ports[3]=8891

ds.ports[4]=8892



測試的主方式是:

public static void main(String[] args) {

ConfigurableApplicationContext context = SpringApplication.run(App.class, args);

context.getBean(Runnable.class).run();

//String property = context.getEnvironment().getProperty("local.ip");

//System.out.println("獲取到的參數(shù)是:"+property);

//context.getBean(UserConfig.class).show();

//context.getBean(Dbconfig.class).show();

//context.getBean(DataSourceProperties.class).show();

System.out.println(context.getBean(TomcatProperties.class));

context.close();

}


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI