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 ...
随机推荐
- Eureka原理与架构
一.原理图 Eureka:就是服务注册中心(可以是一个集群),对外暴露自己的地址 提供者:启动后向Eureka注册自己信息(地址,提供什么服务) 消费者:向Eureka订阅服务,Eureka会将对应服 ...
- 学习笔记--Java标识符
Java标识符 /** * 关于 Java 语言当中的标识符 * * 1. 什么是标识符? * - 在 Java 源程序当中凡是程序员有权利自己命名 * - 标识符可以标识(类名.方法名.变量名.常量 ...
- rockchip-rk3399 RGA的使用
RGA的使用 RGA即二维图像辅助计算单元,该单元可以在极短时间内拷贝.旋转.格式转换.缩放.混合图片. rk官方RGA库链接:https://github.com/rockchip-linux/li ...
- markdown mermaid流程图
流程图 所有流程图都由节点.几何图像.箭头或线条组成. mermaid代码定义了这些节点和边的制作和交互方式.可以有不同的箭头类型.多向箭头以及与子图的连接. 节点 节点 flowchart LR i ...
- HashMap的实现原理(看这篇就够了)
一线资深java工程师明确了需要精通集合容器,尤其是今天我谈到的HashMap. HashMap在Java集合的重要性不亚于Volatile在并发编程的重要性(可见性与有序性). 我会重点讲解以下9点 ...
- Java高效开发-远程debug
1.前言 "这怎么回事?在本地还好好,放到服务器就不行了.这该怎么排查,日志也看不出来啥呀",日常开发中经常会出现这种问题,这时候就可以尝试idea远程debug的模式试试 2.使 ...
- Solon Web 开发,二、开发知识准备
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- java接口概述及特点
1 package face_09; 2 3 4 5 6 abstract class AbsDemo{ 7 abstract void show1(); 8 abstract void show2( ...
- Linux 标准输入输出、重定向
一 相关知识 1)默认地,标准的输入为键盘,但是也可以来自文件或管道(pipe |). 2)默认地,标准的输出为终端(terminal),但是也可以重定向到文件,管道或后引号(backquotes ` ...
- request.getServletContext()爆红问题
ServletRequest的getServletContext方法是Servlet3.0添加的,这个可以看一下官方文档 http://docs.oracle.com/javaee/6/api/jav ...