JAVA语言之浅谈Spring Boot 属性配置和自定义属性配置[Java代码]
龚超 2018-07-17 来源 : 阅读 1114 评论 0

摘要:本文主要向大家介绍了JAVA语言之浅谈Spring Boot 属性配置和自定义属性配置,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言之浅谈Spring Boot 属性配置和自定义属性配置,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

在使用spring boot过程中,可以发现项目中只需要极少的配置就能完成相应的功能,这归功于spring boot中的模块化配置,在pom.xml中依赖的每个Starter都有默认配置,而这些默认配置足以满足正常的功能开发。

如果需要修改自定义修改默认配置,spring boot 提供了很简便的方法,只需要在application.properties 中添加修改相应的配置。(spring boot启动的时候会读取application.properties这份默认配置)

一、修改默认配置

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


server.port=8888

复制代码

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

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


druid.url=jdbc:mysql://192.168.0.20:3306/test

druid.driver-class=com.mysql.jdbc.Driver

druid.username=root

druid.password=123456

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中添加自定义属性配置


com.sam.name=sam

com.sam.age=11

com.sam.desc=magical sam

复制代码

2、编写Bean类,加载属性

Sam类需要添加@Component注解,让spring在启动的时候扫描到该类,并添加到spring容器中。

第一种:使用spring支持的@Value()加载


package com.sam.demo.conf;

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

import org.springframework.stereotype.Component;


/**

* @author sam

* @since 2017/7/15

*/

@Component

public class Sam {

//获取application.properties的属性

@Value("${com.sam.name}")

private String name;


@Value("${com.sam.age}")

private int age;


@Value("${com.sam.desc}")

private String desc;


//getter & setter

}

复制代码

第二种:使用@ConfigurationProperties(prefix="") 设置前缀,属性上不需要添加注解。


package com.sam.demo.conf;

import org.springframework.stereotype.Component;

/**

* @author sam

* @since 2017/7/15

*/

@Component

@ConfigurationProperties(prefix = "com.sam")

public class Sam {

private String name;

private int age;

private String desc;

//getter & setter

}



复制代码

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


package com.sam.demo.controller;

import com.sam.demo.conf.Sam;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

/**

* @author sam

* @since 2017/7/14

*/

@RestController

public class IndexController {

@Autowired

private Sam sam;

@RequestMapping("/index")

public String index() {

System.out.println(sam.getName() + " " + sam.getAge() + " " + sam.getDesc());

return "index";

}

}

复制代码

浏览器访问://localhost:8080/index ,控制台正常打印出sam的内容。

三、application.properties 属性配置详解

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

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


com.sam.name=sam

com.sam.age=11

com.sam.desc=${name} is ${age} years old.


复制代码

在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。根据具体环境进行切换即刻。

用命令运行jar包启动应用的时候,可以指定相应的配置.


java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

复制代码

附:配置方式和优先级
这些方式优先级如下:
a. 命令行参数
b. 来自java:comp/env的JNDI属性
c. Java系统属性(System.getProperties())
d. 操作系统环境变量
e. RandomValuePropertySource配置的random.*属性值
f. jar外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
g. jar内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
h. jar外部的application.properties或application.yml(不带spring.profile)配置文件
i. jar内部的application.properties或application.yml(不带spring.profile)配置文件
j. @Configuration注解类上的@PropertySource
k. 通过SpringApplication.setDefaultProperties指定的默认属性

注:命令行参数这种jar包指定参数启动应用的方式,可能是不安全的,我们可以设置禁止这种方式启动应用,如下:


springApplication.setAddCommandLineProperties(false);

复制代码



package com.sam.demo;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class DemoApplication {


public static void main(String[] args) {

// SpringApplication.run(DemoApplication.class, args);

SpringApplication springApplication = new SpringApplication(DemoApplication.class);

//禁止命令行设置参数

springApplication.setAddCommandLineProperties(false);

springApplication.run(args);

}

}

复制代码

补充:

在spring boot 中配置除了支持 application.properties,还支持application.yml的配置方式,如下:

新建application.yml代替application.properties


server:

port: 9999


com:

sam:

name: sam

age: 11

desc: magical sam


复制代码

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @职坐标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论
本文作者 联系TA

擅长针对企业软件开发的产品设计及开发的细节与流程设计课程内容。座右铭:大道至简!

  • 370
    文章
  • 22921
    人气
  • 87%
    受欢迎度

已有23人表明态度,87%喜欢该老师!

进入TA的空间
求职秘籍 直通车
  • 索取资料 索取资料 索取资料
  • 答疑解惑 答疑解惑 答疑解惑
  • 技术交流 技术交流 技术交流
  • 职业测评 职业测评 职业测评
  • 面试技巧 面试技巧 面试技巧
  • 高薪秘笈 高薪秘笈 高薪秘笈
TA的其他文章 更多>>
WEB前端必须会的基本知识题目
经验技巧 93% 的用户喜欢
Java语言中四种遍历List的方法总结(推荐)
经验技巧 91% 的用户喜欢
Java语言之SHA-256加密的两种实现方法详解
经验技巧 75% 的用户喜欢
java语言实现把两个有序数组合并到一个数组的实例
经验技巧 75% 的用户喜欢
通过Java语言代码来创建view的方法
经验技巧 80% 的用户喜欢
其他海同师资 更多>>
吕益平
吕益平 联系TA
熟悉企业软件开发的产品设计及开发
孔庆琦
孔庆琦 联系TA
对MVC模式和三层架构有深入的研究
周鸣君
周鸣君 联系TA
擅长Hadoop/Spark大数据技术
范佺菁
范佺菁 联系TA
擅长Java语言,只有合理的安排和管理时间你才能做得更多,行得更远!
金延鑫
金延鑫 联系TA
擅长与学生或家长及时有效沟通
经验技巧30天热搜词 更多>>

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程