Spring Boot 自定义配置文件(三)
来源:SegmentFault
时间:2023-01-20 12:27:59 112浏览 收藏
对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《Spring Boot 自定义配置文件(三)》,主要介绍了MySQL、Java、springboot、intellij-idea,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!
简介
上篇我们做了一些简单的运行文件的配置,本篇带领大家来认识常用的一些配置,当然了关于Spring Boot 这些配置太多太多了,如果想了解更多的话直接上官网参考一下,了解相关案例如本篇的配置。 application.properties配置官方指南参考。
Spring Boot有以下方式配置
一、application.properties配置
在 IntelliJ IDEA 开发工具中创建项目的时候,默认的配置文件是application.properties,接下来我们就学习一下然后配置一些我们在开发中经常用到的配置项,进入带领我们揭开Spring Boot 项目的神秘的面纱。
在下面的文档中我会在每个配置中进行注解,这样能更好的了解,当然官方文档有我们所需的全部配置,大家如果项目开发中有需求那么可以进入application.properties配置官方指南参考。
英: Appendix A. Common application properties
1. Various properties can be specified inside your application.properties file, inside your application.yml file, or as command line switches. This appendix provides a list of common Spring Boot properties and references to the underlying classes that consume them. 2. [Note] Property contributions can come from additional jar files on your classpath, so you should not consider this an exhaustive list. Also, you can define your own properties. 3. [Warning] This sample file is meant as a guide only. Do not copy and paste the entire content into your application. Rather, pick only the properties that you need.
译: 官方指南者三段话概况了今天我们要讲得内容:
1. 可以在application.properties文件中,application.yml文件中或命令行开关中指定各种属性。 本附录提供了常用Spring Boot属性的列表以及对使用它们的基础类的引用。 2. [注意] 属性贡献可以来自类路径上的其他jar文件,因此您不应将此视为详尽的列表。 此外,您可以定义自己的属性。 3. [警告] 此示例文件仅供参考。 不要将整个内容复制并粘贴到您的应用程序中。 相反,只选择您需要的属性。
所以我们在添加某些配置属性的时候,一定要根据自己的需要来添加,不然有时出错了,不知道哪里找问题。
1. 常用的application.properties配置
一般情况下在src目录下的/main/resource文件夹中新建application.properties
文件,目录结构如下:
|--src |--main |--resources |--application.properties
我们接下来编写一些常用的属性配置,大家在开发中需要到哪些就直接去查看一下:
#启用调试日志。 debug=false #启用跟踪日志。 trace=false #-------------------------------------- # LOGGING 日记 #-------------------------------------- # 日志配置文件的位置。 例如,Logback的classpath:logback.xml logging.config=classpath:logback.xml # 日志文件名(例如,`myapp.log`)。名称可以是精确位置或相对于当前目录。 logging.file=property.log # 最大日志文件大小。 仅支持默认的logback设置 logging.file.max-size=10MB # 日志文件的位置。 例如,`/ var / log`。 logging.path=/var/log #--------------------------------- # AOP #--------------------------------- # 使用AOP 切面编程 spring.aop.auto=true #是否要创建基于子类的(CGLIB)代理(true),而不是基于标准Java接口的代理(false) spring.aop.proxy-target-class=true #-------------------------------- # Email #-------------------------------- # 编码格式 spring.mail.default-encoding=UTF-8 # SMTP服务器主机 spring.mail.host=smtp.property.com #SMTP服务器端口 spring.mail.port=7800 # 登录SMTP用户名 spring.mail.username=property # 登录SMTP密码 spring.mail.password=123456 #-------------------------------- # WEB 属性配置 #-------------------------------- # 服务器应绑定的网络地址 server.address=127.0.0.1 # 是否启用了响应压缩 server.compression.enabled=false # 连接器在关闭连接之前等待另一个HTTP请求的时间。 未设置时,将使用连接器的特定于容器的默认值。 使用值-1表示没有(即无限)超时 server.connection-timeout=2000 # 错误控制器的路径 server.error.path=/error # 是否启用HTTP / 2支持,如果当前环境支持它。 server.http2.enabled=false # 服务器端口默认为:8080 server.port=8084 # SP servlet的类名。 server.servlet.jsp.class-name=org.apache.jasper.servlet.JspServlet # 主调度程序servlet的路径。 server.servlet.path=/home # 会话cookie名称 server.servlet.session.cookie.name=propertydemo #------------------------------ # HTTP encoding #------------------------------ # HTTP请求和响应的字符集。 如果未明确设置,则添加到“Content-Type”标头。 spring.http.encoding.charset=UTF-8 # 是否启用http编码支持。 spring.http.encoding.enabled=true #-------------------- # MULTIPART (MultipartProperties) #-------------------- # 是否启用分段上传支持 spring.servlet.multipart.enabled=true # 上传文件的中间位置 spring.servlet.multipart.location=/log # 最大文件的大小 spring.servlet.multipart.max-file-size=1MB # 最大请求大小 spring.servlet.multipart.max-request-size=10MB # 是否在文件或参数访问时懒惰地解析多部分请求。 spring.servlet.multipart.resolve-lazily=false #-------------------------------------------- # SPRING SESSION JDBC (JdbcSessionProperties) #-------------------------------------------- # cron表达式用于过期的会话清理作业 spring.session.jdbc.cleanup-cron=0 * * * * * # 数据库模式初始化模式 spring.session.jdbc.initialize-schema=embedded # 用于初始化数据库模式的SQL文件的路径 spring.session.jdbc.schema=classpath:org/springframework/session/jdbc/schema-@@platform@@.sql # 用于存储会话的数据库表的名称 spring.session.jdbc.table-name=SPRING_SESSION #---------------------------------- # MONGODB 数据库配置 #---------------------------------- # 数据库名称 spring.data.mongodb.database=demo # host 配置 spring.data.mongodb.host=127.0.0.1 # 登录用户名 spring.data.mongodb.username=property # 登录密码 spring.data.mongodb.password=123456 # 端口号,自己根据安装的mongodb端口配置 spring.data.mongodb.port=9008 # 要启用的Mongo存储库的类型 spring.data.mongodb.repositories.type=auto # 连接数据uri spring.data.mongodb.uri=mongodb://localhost/test #--------------------------------------- # DATASOURCE 数据库配置 #--------------------------------------- # MySql jdbc Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 连接数据库 # demo表示的是你创建的数据库; spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo?useSSL=false&requireSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC # 数据库用户名 spring.datasource.username=root # 数据库密码 spring.datasource.password=123456 #----------------------------------- # Jpa使用 #----------------------------------- # 目标数据库进行操作,默认情况下自动检测。可以使用“databasePlatform”属性设置。 #spring.jpa.database= demo1 # 要操作的目标数据库的名称,默认情况下自动检测。 也可以使用“Database”枚举来设置。 #spring.jpa.database-platform=DEMO # DDL模式 一般有这几种方式,Spring Boot会根据是否认为您的数据库是嵌入式的,为您选择一个默认值 # update: 更新架构时,使用; spring.jpa.hibernate.ddl-auto=update # 是否启用SQL语句的日志记录 spring.jpa.show-sql=true #---------------------------------------- # TESTING PROPERTIES #---------------------------------------- # 要替换的现有DataSource的类型 spring.test.database.replace=any # MVC打印选项 spring.test.mockmvc.print=default # ---------------大家查看文档进行配置,不一一列举了---------------------- # 各个属性注解在查看常用配置文件application.properties中 # FREEMARKER # DEVTOOLS配置 # SPRING HATEOAS # HTTP message conversion # GSON # JDBC # JEST (Elasticsearch HTTP client) (JestProperties) # CASSANDRA (CassandraProperties) # --------------------------等等----------------------------------
查看常用配置文件application.properties
2. 自定义属性
由于有时为了方便项目的开发维护,我们可能需要到自定义配置属性,接下来我们也来搞一下自定义属性配置。
在application.properties自定义配置属性:
1.application.properties添加:
#-------------------------------- # 自定义属性 #-------------------------------- com.eirunye.defproname="root" com.eirunye.defpropass="123456"
2.在DefPropertyController.class引用
@RestController public class DefPropertyController { @Value("${com.eirunye.defproname}") private String defProName; @Value("${com.eirunye.defpropass}") private String defProPass; @RequestMapping(value = "/defproprety") public String defPropretyUser() { return "这个自定义属性名为: " + defProName + ", 密码为:" + defProPass; } }
- 注意
在获取自定义属性时一定要严格按照配置文件来获取并且Value里面的字符串一定是
$+花括号
{***},花括号里面的
***表示为:
application.properties里面自定义的字符串,所以本例就是表示为:
@Value("${com.eirunye.defproname}")。
如果
application.properties有自定义为
test.ok="haha",同样的获取方式为:
@Value("${test.ok}")
3.测试
这里暂未使用测试代码的方式,后面的文章会讲到
- IntelliJ IDEA访问
http://localhost:8084/defproprety
通过Bean的形式获取
假如我们遇到这样情况,自定义属性多,然后每个都是通过
@Value(${""})方式的话可能会很容易出错,那么我们可以采用以下方式。
1.新建一个
Properties.class
添加
@ConfigurationProperties(prefix = "com.eirunye")//表示的是通过自定义属性查找,如果自定义是:
test.ok=haha,则该这样表示:
@ConfigurationProperties(prefix = "test")
@ConfigurationProperties(prefix = "com.eirunye")//添加该注解 public class Properties { private String defproname; private String defpropass; // get/set方法 public String getDefproname() { return defproname; } public void setDefproname(String defproname) { this.defproname = defproname; } public String getDefpropass() { return defpropass; } public void setDefpropass(String defpropass) { this.defpropass = defpropass; }}
2.在controller包下创建
DefBeanPropertyController.class
@RestController public class DefBeanPropertyController { //通过 Autowired注解来获取到 Properties属性,注:Autowired是按类型进行装配,可获取它所装配类的属性 @Autowired Properties properties; @RequestMapping(value = "/bean/defproperty") public String getDefBeanProperties() { return "这是通过Bean注解的方式获取属性: " + properties.getDefproname() + ",密码为: " + properties.getDefpropass(); }}
3.在项目的入口文件Application添加注解@EnableConfigurationProperties
最后加上包名不然可能找不到扫描文件如:
@EnableConfigurationProperties({com.eirunye.defpropertys.bean.Properties.class})。
@SpringBootApplication @EnableConfigurationProperties({com.eirunye.defpropertys.bean.Properties.class})//添加注解bean的扫描文件 public class DefpropertysApplication { public static void main(String[] args) { SpringApplication.run(DefpropertysApplication.class, args); } }
4.测试
IntelliJ IDEA访问
创建文件xxx.properties文件方式
我们可以自己创建一个自定义属性的文件如本例def.properties,(注:一般都是以 .properties 文件结尾)
1.添加自定义
def.properties配置如下:
#-------------------------------- # 自定义属性 #-------------------------------- # 用户名 com.eirunye.defineuser="property" # 年龄 com.eirunye.defineage=20
2.创建
DefineProperties.class
@Configuration @ConfigurationProperties(prefix = "com.eirunye")//添加注解 ConfigurationProperties "com.eirunye"表示的是自定义属性 @PropertySource("classpath:defines.properties")// 添加注解 PropertySource 该注解能根据路径扫描到我们的文件 public class DefineProperties { // 这里可以通过@Value("${}")方式添加,我已经屏蔽掉了,直接通过ConfigurationProperties注解的方式 // @Value("${com.eirunye.defineuser}") private String defineuser; // @Value("${com.eirunye.defineage}") private int defineage; // get/set方法 public String getDefineuser() { return defineuser; } public void setDefineuser(String defineuser) { this.defineuser = defineuser; } public int getDefineage() { return defineage; } public void setDefineage(int defineage) { this.defineage = defineage; }}
3.在
DefinePropertiesController.class引用
@RestController public class DefinePropertiesController { @Autowired DefineProperties defineProperties; @RequestMapping(value = "define/Properties") public String getDefinePropertiesData(){ return "新建文件自定义属性姓名:"+defineProperties.getDefineuser()+",新建文件自定义属性年龄:"+defineProperties.getDefineage(); } }
4.别忘了在Application里面添加配置
@EnableConfigurationProperties,即:`@EnableConfigurationProperties({com.eirunye.defpropertys.bean.Properties.class,com.eirunye.defpropertys.bean.DefineProperties.class})
`
5.测试
http://localhost:8084/define/Properties
下载application.properties案例demo
二、application.yml配置
由于application.properties配置有点繁琐,简洁是我们非常喜欢的,那么在Spring Boot程序里面当然也是可以用.yml文件来配置的,接下来让我们进入对.yml文件的一些相关配置吧,官方文档Using YAML Instead of Properties。
1.常见的配置
首先在src目录下的/main/resource文件夹中新建
application.yml、application-dev.yml、application-prod.yml三个文件,删除
application.properties文件,目录结构如下:
|--src |--main |--resources |--application.yml |--application-dev.yml |--application-prod.yml
相信很多人要骂街了,这什么情况不是说,yml配置很给力吗?怎么还有创建那么多文件,这不是比上面的
application.properties配置还多此一举吗?莫急接下来让我们来看看.yml的配置之后,我相信你肯定在项目中会喜欢用它。
常见的配置属性如下: 【注意: 这里属性之间的间隔必须按照要求而来,如:冒号后面要空格】
application.yml配置
spring: profiles: active: dev #引用 application-dev.yml文件,这里我们可以改为 prod,表示引用application-prod.yml文件 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/demo?useSSL=false&requireSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC username: root password: 12346 jpa: hibernate: ddl-auto: update show-sql: true data: mongodb: host: 127.0.0.1 uri: mongodb://localhost/test username: root password: 123456 database: test test: database: replace: any mockmvc: print: default servlet: multipart: enabled: true
application-dev.yml可以当成正式服务器端口
server: port: 8084
application-prod.yml可以当成测试服务器端口
server: port: 8080
- 查看更多.yml配置
2.自定义yml配置
在application.yml配置
1.和上面的application.properties类似,但是需要注意的是格式问题
com: eirunye: ymlname: ymlroot ymlpass: yml123456
2.通过
@Value("${com.eirunye.ymlname}")获取
@RestController public class YmlPropertiesController{ @Value("${com.eirunye.ymlname}") private String ymlname; @Value("${com.eirunye.ymlpass}") private String ymlpass; @RequestMapping(value = "yml/proprety") public String getYmlPropreties() { return "这个自定义属性名为: " + ymlname+ ", 密码为:" + ymlpass; } }
3.测试
访问:
http://localhost:8084/yml/proprety
通过Bean方式获取和application.properties方式一样
1.创建YmlPropertyBean.class
@ConfigurationProperties(prefix = "com.eirunye")//添加该注解 public class YmlPropertyBean { private String ymlname; private String ymlpass; // get/set方法..... }
2.在
YmlPropertyBeanController.class引用
@RestController public class YmlPropertyBeanController { @Autowired YmlPropertyBean propertyBean; @RequestMapping(value = "/bean/ymlproperty") public String getYmlPropertyData(){ return "这个bean自定义属性名为: " + propertyBean.getYmlname()+ ", 密码为:" + propertyBean.getYmlpass(); } }
3.测试
访问
http://localhost:8084/bean/ymlproperty
下载.yml案例demo
三、总结
1.本篇主要讲得配置文件,到此就结束了,在开发中这是我们经常用到。
2.在本篇有些相关配置,本例的代码实例还没涉及到,接下来会继续结合相关的配置案例继续更新。
3.相信大家也有所掌握。
四、Spring Boot系列
大家想学习更多关于Spring Boot系列可以查看
终于介绍完啦!小伙伴们,这篇关于《Spring Boot 自定义配置文件(三)》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布数据库相关知识,快来关注吧!
-
499 收藏
-
244 收藏
-
235 收藏
-
157 收藏
-
101 收藏
-
335 收藏
-
467 收藏
-
303 收藏
-
176 收藏
-
368 收藏
-
475 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习
-
- 尊敬的秋天
- 这篇文章内容太及时了,太细致了,赞 👍👍,已收藏,关注大佬了!希望大佬能多写数据库相关的文章。
- 2023-03-27 07:04:47
-
- 刻苦的裙子
- 好细啊,码住,感谢up主的这篇技术文章,我会继续支持!
- 2023-01-23 21:08:59
-
- 野性的过客
- 这篇技术贴真及时,作者大大加油!
- 2023-01-22 07:19:52
-
- 美满的荷花
- 这篇技术贴真是及时雨啊,细节满满,感谢大佬分享,码起来,关注师傅了!希望师傅能多写数据库相关的文章。
- 2023-01-21 19:37:13
-
- 自然的大炮
- 很棒,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢老哥分享技术文章!
- 2023-01-20 13:27:17