SpringBoot 配置分析(一)

来源:互联网 发布:大平面铣削编程 编辑:程序博客网 时间:2024/06/05 02:14


读取一个配置文件:

在resource下创建一个application.properties ,内容:

local.ip=192.168.1.12

配置文件默认的名字为:application.properties ,默认位置在classpath根目录下或者classpath:/config下。file:/或 file:/config


第一种方法:

在app类中读取配置文件内容

package com.gcx.spring.SpringBoot;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.context.annotation.Bean;/** * Hello world! * */@SpringBootApplicationpublic class App {    public static void main( String[] args ){    ConfigurableApplicationContext context=SpringApplication.run(App.class, args);        System.out.println(context.getEnvironment().getProperty("local.ip"));    }}

运行结果:

或者用这种方式,创建一个UserConfig.java

package com.gcx.spring.SpringBoot;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.core.env.Environment;import org.springframework.stereotype.Component;@Componentpublic class UserConfig {@Autowiredprivate Environment env;public void show(){System.out.println("local.ip:"+env.getProperty("local.ip"));}}
修改app类:

package com.gcx.spring.SpringBoot;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;/** * Hello world! * */@SpringBootApplicationpublic class App {    public static void main( String[] args ){    ConfigurableApplicationContext context=SpringApplication.run(App.class, args);    context.getBean(UserConfig.class).show();    //System.out.println(context.getEnvironment().getProperty("local.ip"));    }}

得到同样地结果

第三种方式:在application.properties 加上:

local.port=8080


在UserConfig中加入一个@Value注解

运行app类:




但我们有时候不想让配置文件叫application.properties,想要换一个名字

把application.properties 换成 gcx.properties

在运行的时候,运行Run Confiugurations   ---->在Arguments写上一句话---->Run 



但是有时候我们不满足需求,想要放在我自己指定的文件中:

首先在resources下创建一个conf 在Run Configutations

也可以支持多个,比如在文件中:E:/test/tomcat.properties

此处不需要修改

Run Configurations配置

运行结果:





第二种方法:

还可以通过这种方式获取配置文件信息:

创建jdbc.properties在resources下

url=jdbc:mysql:///springbootDriverClass=com.mysql.jdbc.Driver


创建FileConfig.java

package com.gcx.spring.SpringBoot;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;@Configuration@PropertySource("classpath:jdbc.properties")public class FileConfig {}
创建JdbcConfig.java

package com.gcx.spring.SpringBoot;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;@Componentpublic class JdbcConfig {@Value("${url}")private String url;@Value("${DriverClass}")private String DriverClass;public void show(){System.out.println("url:"+url);System.out.println("************");System.out.println("DriverClass:"+DriverClass);}}
我们修改下App.class

package com.gcx.spring.SpringBoot;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;/** * Hello world! * */@SpringBootApplicationpublic class App {    public static void main( String[] args ){    //ConfigurableApplicationContext context=SpringApplication.run(App.class, args);    SpringApplication app=new SpringApplication(App.class);    ConfigurableApplicationContext context = app.run(args);    context.getBean(UserConfig.class).show();        context.getBean(JdbcConfig.class).show();    context.close();    //System.out.println(context.getEnvironment().getProperty("local.ip"));    }}

运行结果:




当然也同样可以从文件中读取

在e:/test/jdbc.properties读取


在JdbcConfig.java加上两行

FileConfig.java加上一个注解

运行结果:






第三种方法:创建一个类:DataSourceProperties.java

package com.gcx.spring.SpringBoot;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;@Component@ConfigurationProperties(prefix="gcx")public class DataSourceProperties {private String url;private String DriverClass;private String username;private String password;public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getDriverClass() {return DriverClass;}public void setDriverClass(String driverClass) {DriverClass = driverClass;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public void show(){System.out.println("gcx.url:"+url);System.out.println("gcx.DriverClass:"+DriverClass);System.out.println("==================");System.out.println("gcx.username:"+username);System.out.println("gcx.password:"+password);}}

@ConfigurationProperties
前缀是gcx的给匹配进来

把gcx.properties还原成application.properties,添加四个配置项


运行: