Spring Boot属性配置&自定义属性配置

一、修改默认配置

例1、spring boot 开发web应用的时候,默认tomcat的启动端口为8080,如果需要修改默认的端口,则需要在application.properties 添加以下记录:

server.port=8888

重启项目,启动日志可以看到:Tomcat started on port(s): 8888 (http) 启动端口为8888,浏览器中访问 http://localhost:8888 能正常访问。

例2、spring boot 开发中的数据库连接信息配置(这里使用com.alibaba 的 druid), 在application.properties 添加以下记录:

druid.url=jdbc:mysql://localhost:3306/cimc
druid.driver-class=com.mysql.jdbc.Driver
druid.username=root
druid.password=root
druid.initial-size=1
druid.min-idle=1
druid.max-active=20
druid.test-on-borrow=true

说明了如需修改starter模块中的默认配置,只需要在在application.properties 添加需要修改的配置即

附: application.properties 全部配置项,点击查看Spring Boot 所有配置说明

二、自定义属性配置

在application.properties中除了可以修改默认配置,我们还可以在这配置自定义的属性,并在实体bean中加载出来。

1、在application.properties中添加自定义属性配置

user=loaderman
userPassword=123456

2、编写Bean类,加载属性

User类需要添加@Component注解,让spring在启动的时候扫描到该类,并添加到spring容器中。
package com.generalichina.cimc.bean;

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

@Component
public class User {
    //获取application.properties的属性
    @Value("${user}")
    private String userName;

    @Value("${userPassword}")
    private String userPassword;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserPassword() {
        return userPassword;
    }

    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }
}

3、在controller中注入并使用User这个Bean。

package com.generalichina.cimc.controller;

import com.generalichina.cimc.bean.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class IndexController {
    @Autowired
    private User user;
    @RequestMapping("/index")
    public String index() {
        System.out.println(user.getUserName() + " " + user.getUserPassword());
        return "index";
    }
}
浏览器访问:http://localhost:8888/index

控制台输出:loaderman 123456

三、application.properties 属性配置详解

1、参数引用与random随机数方法的使用

在application.properties内可以直接通过${}引用其他属性的值,如下:
user=loaderman
userPassword=123456${user}

输出: loaderman 123456loaderman

在application.properties中如果需要获取随机数,可以通过${random},如下:
#获取随机字符串
com.sam.randomValue=${random.value}

#获取随机字符串:${random.value}
#获取随机int:${random.int}
#获取10以内的随机数:${random.int(10)}
#获取10-20的随机数:${random.int[10,20]}
#获取随机long:${random.long}
#获取随机uuid:${random.uuid}

2、多环境配置

实际开发中可能会有不同的环境,有开发环境、测试环境、生成环境。对于每个环境相关配置都可能有所不同,如:数据库信息、端口配置、本地路径配置等。

如果每次切换不同环境都需要修改application.properties,那么操作是十分繁琐的。在spring boot中提供了多环境配置,使得我们切换环境变得简便。

在application.properties同目录下新建一下三个文件:

application-dev.properties      //开发环境的配置文件
application-test.properties     //测试环境的配置文件
application-prod.properties     //生产环境的配置文件
上面三个文件分别对应了 开发、测试、生产 的配置内容,接下来就是应该怎么选择性引用这些配置了。

在application.properties添加:

spring.profiles.active=dev
#引用测试的配置文件
#spring.profiles.active=test
#引用生产的配置文件
#spring.profiles.active=prod
添加spring.profiles.active=dev后启动应用,会发现引用了dev的这份配置信息。
可以看出上面三个配置文件符合 application-{profile}.properties 格式,而在application.properties添加的 spring.profiles.active=dev 中的dev正是上面配置文件中的 profile。根据具体环境进行切换即刻。

补充:

在spring boot 中配置除了支持 application.properties,还支持application.yml的配置方式,如下:
新建application.yml代替application.properties
server:
  port: 8080
spring:
  datasource:
    #name: druid
    #type: com.alibaba.druid.pool.DruidDataSource
    #druid相关配置
    druid:
      #监控统计拦截的filters
      filters: stat
      driver-class-name: oracle.jdbc.OracleDriver
      #基本属性
      url: jdbc:oracle:thin:@192.168.192.192:1521:ORCL
      username: root
      password: root
      #配置初始化大小/最小/最大
      initial-size: 5
      min-idle: 5
      max-active: 20
      #获取连接等待超时时间
      max-wait: 60000
      #间隔多久进行一次检测,检测需要关闭的空闲连接
      time-between-eviction-runs-millis: 60000
      #一个连接在池中最小生存的时间
      min-evictable-idle-time-millis: 300000
      validation-query: select * from xxx
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
  mvc:
    view:
      prefix: /WEB-INF/jsp/
      suffix: .jsp
    resources:
      add-mappings: false
  jackson:
    serialization:
      write-dates-as-timestamps: true

## 该配置节点为独立的节点,有很多同学容易将这个配置放在spring的节点下,导致配置无法被识别
mybatis:
  mapper-locations: classpath:mapper/*.xml  #注意:一定要对应mapper映射xml文件的所在路径
  type-aliases-package: com.sharewin.fcapp.pojo  # 注意:对应实体类的路径
  configuration:
    use-column-label: true
    use-generated-keys: true
    map-underscore-to-camel-case: true

logging:
  config: classpath:logback-spring.xml
  path: /var/log

debug: true
注意:port: 8080中间是有空格的,yml语法请参考:yml配置文件用法
原文地址:https://www.cnblogs.com/loaderman/p/10233420.html