springBoot配置分析(属性和结构化)

使用idea自带插件创建项目

一直下一步到完成

application.properties

local.ip.addr = 192.168.2.110
redis.host = 192.168.3.11
redis.auth = redis-01
redis.port = 6380

gerry.datasource.driverClassName = com.mysql.jdbc.Driver
gerry.datasource.url = jdbc:mysql:///db
gerry.datasource.username = root
gerry.datasource.password = 123

application.yml

local:
  ip:
    test: 192.168.2.220-yml

主方法类

package com.boot.config.bootconfig;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.Environment;

@SpringBootApplication
/**
 * 总结springBoot项目配置:
 * 1、通过环境Environment方式读取配置文件中的信息
 * 2、通过@Value方式来读取配置信息
 * 3、通过@[email protected]("指定配置文件的路径")
 * 4、通过@ConfigurationProperties指定配置类
 * 注意:配置文件的加载顺序及文件名称
 * 1、config/application.properties
 *    config/application.yml
 *    application.properties
 *    application.yml
 * 2、指定配置文件(名称,路径)(设置到运行参数中,
 *      如设置带vm参数中要加-Dspring.config.name=xxx/axxx/app)
 *      设置到program参数中直接--spring.config.name=xxx/axxx/app
 *    --spring.config.name=xxx/axxx/app(后缀可以省略)
 *    --spring.config.location=classpath:xxx.properties/yml多个配置文件可以使用逗号分隔
 *                             file:/D:/tmp/app.properties 指定绝对路径
 *
 */
public class BootConfigApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext context =
                SpringApplication.run(BootConfigApplication.class, args);
        // 通过spring容器获取环境对象
        Environment env = context.getEnvironment();
        String ip = env.getProperty("local.ip.addr");
        String testId = env.getProperty("local.ip.test");
        String currentDir = env.getProperty("user.dir");//当前目录
        String envProperty = env.getProperty("spring.app.name");
        String namePro = env.getProperty("gerry.name");
        System.out.println(ip+","+currentDir+","+testId+","+envProperty+","+namePro);

        // 通过@Value方式读取
        RedisConfig redisConfig = context.getBean(RedisConfig.class);
        redisConfig.show();

        // 通过ConfigurationProperties方式
        DatasourceProperties datasourceProperties = context.getBean(DatasourceProperties.class);
        System.out.println(datasourceProperties);

        context.close();
    }
}

RedisConfig

package com.boot.config.bootconfig;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class RedisConfig {

    @Autowired
    private DatasourceProperties dp;

    @Value("${redis.port:6379}")
    private int port;

    @Value("${redis.host:127.0.0.1}")
    private String host;

    @Value("${redis.auth:123}")
    private String auth;

    public void show() {
        System.out.println(port+","+host+","+auth+","+dp.getDriverClassName());
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getAuth() {
        return auth;
    }

    public void setAuth(String auth) {
        this.auth = auth;
    }
}

DatasourceProperties

package com.boot.config.bootconfig;

/*@Component
@ConfigurationProperties(prefix = "gerry.datasource")*/
public class DatasourceProperties {

    private String driverClassName;
    private String url;
    private String username;
    private String password;

    public String getDriverClassName() {
        return driverClassName;
    }

    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    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;
    }

    @Override
    public String toString() {
        return "DatasourceProperties{" +
                "driverClassName=‘" + driverClassName + ‘\‘‘ +
                ", url=‘" + url + ‘\‘‘ +
                ", username=‘" + username + ‘\‘‘ +
                ", password=‘" + password + ‘\‘‘ +
                ‘}‘;
    }
}

DataSourceConfig(通过依赖注入获取实例得到DatasourceProperties实例)

package com.boot.config.bootconfig.config;

import com.boot.config.bootconfig.DatasourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class DataSourceConfig {
    @Bean
    @ConfigurationProperties(prefix = "gerry.datasource")
    public DatasourceProperties dp() {
        return new DatasourceProperties();
    }
}

FileConfig (使用此方式可配置运行时参数)

package com.boot.config.bootconfig;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@PropertySource("classpath:conf/app.yml") // 不生效
@PropertySource("classpath:conf/app1.properties")
@PropertySource("file:/D:/tmp/app.properties")
public class FileConfig {
}

原文地址:https://www.cnblogs.com/lm970585581/p/9800425.html

时间: 2024-08-02 00:05:46

springBoot配置分析(属性和结构化)的相关文章

MaxCompute读取分析OSS非结构化数据的实践经验总结

摘要: 本文背景 很多行业的信息系统中,例如金融行业的信息系统,相当多的数据交互工作是通过传统的文本文件进行交互的.此外,很多系统的业务日志和系统日志由于各种原因并没有进入ELK之类的日志分析系统,也是以文本文件的形式存在的. 1. 本文背景 很多行业的信息系统中,例如金融行业的信息系统,相当多的数据交互工作是通过传统的文本文件进行交互的.此外,很多系统的业务日志和系统日志由于各种原因并没有进入ELK之类的日志分析系统,也是以文本文件的形式存在的.随着数据量的指数级增长,对超大文本文件的分析越来

搜索引擎系列十:Solr(solrj 、索引API 、 结构化数据导入)

一.SolrJ介绍 1. SolrJ是什么? Solr提供的用于JAVA应用中访问solr服务API的客户端jar.在我们的应用中引入solrj: <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>7.3.0</version> </dependency> 2. SolrJ的核

【转】SpringBoot配置属性系列-之DataSource

SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之NOSQL SpringBoot配置属性之MQ SpringBoot配置属性之Security SpringBoot配置属性之Migration SpringBoot配置属性之其他 另外附上个人关于springboot的一些文章 SpringBoot前世今生 SpringBoot集成mybatis S

结构化异常处理(二):配置异常的状态

一.TargetSite属性(public MethodBase TargetSite { get; }) System.Exception.TargetSite属性帮助我们了解引发某个异常的方法的各种信息.输出TargetSite的值将显示返回值类型.方法名称.引发异常方法的参数. 它不是只返回字符串,而是返回一个强类型的System.Reflection.MethodBase对象. 1 Console.WriteLine("Member name: {0}", e.TargetSi

SpringBoot原理分析与配置

1.1 起步依赖原理分析 1.1.1 分析spring-boot-starter-parent 按住Ctrl点击pom.xml中的spring-boot-starter-parent,跳转到了spring-boot-starter-parent的pom.xml,xml配置如下(只摘抄了部分重点配置): <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-de

SpringBoot配置属性之NOSQL

SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之NOSQL SpringBoot配置属性之MQ SpringBoot配置属性之Security SpringBoot配置属性之Migration SpringBoot配置属性之其他 另外附上个人关于springboot的一些文章 SpringBoot前世今生 SpringBoot集成mybatis S

SpringBoot配置属性之MQ

SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之NOSQL SpringBoot配置属性之MQ SpringBoot配置属性之Security SpringBoot配置属性之Migration SpringBoot配置属性之其他 另外附上个人关于springboot的一些文章 SpringBoot前世今生 SpringBoot集成mybatis S

SpringBoot配置属性之其他

SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之NOSQL SpringBoot配置属性之MQ SpringBoot配置属性之Security SpringBoot配置属性之Migration SpringBoot配置属性之其他 另外附上个人关于springboot的一些文章 SpringBoot前世今生 SpringBoot集成mybatis S

SpringBoot配置属性之Migration

SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之NOSQL SpringBoot配置属性之MQ SpringBoot配置属性之Security SpringBoot配置属性之Migration SpringBoot配置属性之其他 另外附上个人关于springboot的一些文章 SpringBoot前世今生 SpringBoot集成mybatis S