SpringBoot外部配置属性注入
一、命令行参数配置
Spring Boot可以是基于jar包运行的,打成jar包的程序可以直接通过下面命令运行:
java -jar xx.jar
那么就可以通过命令行改变相关配置参数。例如默认tomcat端口8080,那么通过命令行可以进行修改,如下:
java -jar xx.jar --server.port=9090
案例:提供用户查询服务的两个实例,一个默认8899端口,一个外部设置的8989端口
1、属性类:

2、默认属性配置:

3、使用该属性

4、jar包运行


通过该案例亦可验证外部参数设置可以改变默认设置的属性。
二、属性注入:
1、属性注入常用注解:

2、常规属性配置@Value,以c3p0访问数据库为例说明:
1)引入数据源依赖

2)application.properties增加数据源配置

3)Java配置数据源
Java配置通过@Configuration和@Bean实现。前置声明当前类是一个配置类,相当于一个Spring配置的xml文件,后者注解在方法上,声明当前方法的返回值为一个Bean。
数据源配置使用Spring中的@Value注解对每个属性进行注入,通过@Bean添加到容器中。

4)测试数据源是否成功添加

测试结果:

这个就是Spring使用@Value进行属性注入的操作。那么Spring Boot有什么改进呢? 使用@ConfigurationProperties
3、类型安全的属性配置@ConfigurationProperties
改进常规属性注入的方式,改变如下:
1)application.propterties配置修改如下:

2)数据源配置:

注意@Bean以上部分,删除了@Value相关部分,添加了getter/setter方法。同时重点关注属性名与properties中保持一致。(默写情况下可以不一致,涉及松散绑定,有机会另外写笔记)。
3)测试部分同常规属性注入,测试结果一样。
4、第三方属性配置
我们查看@ConfigurationProperties注解实现,如下:

可知其除了可以注解类外,还可以在方法上进行注解。那么方法上有什么妙用呢?其与@Bean配合使用,可以将属性绑定到控件之外的第三方组件上。
实操:
1)建一个第三方组件

2)application.properties文件赋值

3)配置类,@Bean的同时直接赋值

4)测试

测试结果如下:

通过以上两例通过@ConfigurationProperties,对于待输入属性均必须有getter/setter方法。可以猜测对该注解Spring Boot应该使用了内省或反射机制。
SpringBoot外部配置属性注入的更多相关文章
- 外部配置属性值是如何被绑定到XxxProperties类属性上的?--SpringBoot源码(五)
注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 前言 本篇接 SpringBoot是如何实现自动配置的?--SpringBoot源码(四) 温故而知新,我们来简单回顾一下上 ...
- Spring boot将配置属性注入到bean类中
一.@ConfigurationProperties注解的使用 看配置文件,我的是yaml格式的配置: // file application.yml my: servers: - dev.bar.c ...
- Spring boot将配置属性注入到bean 专题
https://blog.csdn.net/wangmx1993328/article/details/81002901 Error starting ApplicationContext. To d ...
- SpringBoot外部配置
Spring Boot的配置文件 Spring Boot使用一个全局的配置文件application.properties或者application.yml(yaml语言的配置文件),放置在src/m ...
- Spring学习笔记(二)——Spring相关配置&属性注入&Junit整合
一.Spring的相关配置 1.1 Bean元素 class属性:被管理对象的完整类名 name属性:给Bean起个名字,能重复,能使用特殊字符.后来属性 id属性:给Bean起个名字,不能重复,不能 ...
- SpringBoot加密配置属性
一.背景 在系统中的运行过程中,存在很多的配置属性,比如: 数据库配置.阿里云配置 等等,这些配置有些属性是比较敏感的,是不应直接以明文的方式出现在配置文件中,因此对于这些配置我们就需要加密来处理. ...
- SpringBoot的配置属性文件*.properties值如何映射到类中使用
想要在JAVA Bean中读取配置文件中的内容有两种方式,可以进行获取到 第一种方式: 1.在默认的配置文件application.properties 中进行设置 Key-Value键值对 com. ...
- SpringBoot系列之外部配置用法简介
SpringBoot系列之外部配置用法简介 引用Springboot官方文档的说法,官方文档总共列举了如下用法: 1.Devtools global settings properties on yo ...
- Spring中@value以及属性注入的学习
1.简单的Java配置 配置文件(jdbc.properties) jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://1 ...
随机推荐
- HITsz 数据库笔记
这是 HITsz 数据库笔记,欢迎到我的 GitHub 上查看,有笔记说明和源码,作业和实验报告,希望对你有帮助 博客园显示图片异常 数据库基本概念 数据抽象 通过抽象来对用户屏蔽复杂性,以简化用户与 ...
- Cache一致性协议与伪共享问题
Cache一致性协议 在说伪共享问题之前,有必要聊一聊什么是Cache一致性协议 局部性原理 时间局部性:如果一个信息项正在被访问,那么在近期它很可能还会被再次访问 比如循环.方法的反复调用等 空间局 ...
- 无聊的周末用Java写个扫雷小游戏
周末无聊,用Java写了一个扫雷程序,说起来,这个应该是在学校的时候,写会比较好玩,毕竟自己实现一个小游戏,还是比较好玩的.说实话,扫雷程序里面核心的东西,只有点击的时候,去触发更新数据这一步. Sw ...
- Jarvis OJ--PHPINFO
一道浙大的题目 题目地址:http://web.jarvisoj.com:32784 拿到这道题目, 是一道反序列化的题目,题目源码很简单,当创建OowoO()这个类的对象时,会自动调用__const ...
- 面渣逆袭:Java并发六十问,快来看看你会多少道!
大家好,我是老三,面渣逆袭 继续,这节我们来盘一盘另一个面试必问知识点--Java并发. 这篇文章有点长,四万字,图文详解六十道Java并发面试题.人已经肝麻了,大家可以点赞.收藏慢慢看!扶我起来,我 ...
- Ubuntu16桌面版编译OpenCV4的java库和so库
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- prometheus基本概念(思维导图)
参考文章: prometheus词汇表 prometheus的summary和histogram指标的简单理解
- 【解决了一个小问题】golang build中因为缓存文件损坏导致的编译错误
编译的过程中出现了一个吓人的错误: GOROOT=C:\Go #gosetup GOPATH=C:\Users\ahfuzhang\go #gosetup C:\Go\bin\go.exe mod t ...
- gorm创建记录
1. 简单创建记录 user := User{Name: "李四", Age: 88, Birthday: time.Now()} ret := db.Create(&u ...
- golang中字符串-字节切片,字符串-字符切片的互转
package main import ( "fmt" "reflect" ) func B2S(bs []uint8) string { // 将字节切片转换 ...