zoukankan      html  css  js  c++  java
  • 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配置文件用法
  • 相关阅读:
    ABP框架理论研究总结(典藏版)
    ABP系列文章总目录:
    使用NServiceBus开发分布式应用
    shell脚本进阶 详解及其实例(一)
    linux模拟实现主机跨路由通信
    网络管理之基础知识详解
    RAID RAID 大揭秘~
    磁盘管理(一)磁盘结构
    如何在centos7上安装源码包
    压缩与解压缩
  • 原文地址:https://www.cnblogs.com/loaderman/p/10233420.html
Copyright © 2011-2022 走看看