一、命令行参数配置

  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外部配置属性注入的更多相关文章

  1. 外部配置属性值是如何被绑定到XxxProperties类属性上的?--SpringBoot源码(五)

    注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 前言 本篇接 SpringBoot是如何实现自动配置的?--SpringBoot源码(四) 温故而知新,我们来简单回顾一下上 ...

  2. Spring boot将配置属性注入到bean类中

    一.@ConfigurationProperties注解的使用 看配置文件,我的是yaml格式的配置: // file application.yml my: servers: - dev.bar.c ...

  3. Spring boot将配置属性注入到bean 专题

    https://blog.csdn.net/wangmx1993328/article/details/81002901 Error starting ApplicationContext. To d ...

  4. SpringBoot外部配置

    Spring Boot的配置文件 Spring Boot使用一个全局的配置文件application.properties或者application.yml(yaml语言的配置文件),放置在src/m ...

  5. Spring学习笔记(二)——Spring相关配置&属性注入&Junit整合

    一.Spring的相关配置 1.1 Bean元素 class属性:被管理对象的完整类名 name属性:给Bean起个名字,能重复,能使用特殊字符.后来属性 id属性:给Bean起个名字,不能重复,不能 ...

  6. SpringBoot加密配置属性

    一.背景 在系统中的运行过程中,存在很多的配置属性,比如: 数据库配置.阿里云配置 等等,这些配置有些属性是比较敏感的,是不应直接以明文的方式出现在配置文件中,因此对于这些配置我们就需要加密来处理. ...

  7. SpringBoot的配置属性文件*.properties值如何映射到类中使用

    想要在JAVA Bean中读取配置文件中的内容有两种方式,可以进行获取到 第一种方式: 1.在默认的配置文件application.properties 中进行设置 Key-Value键值对 com. ...

  8. SpringBoot系列之外部配置用法简介

    SpringBoot系列之外部配置用法简介 引用Springboot官方文档的说法,官方文档总共列举了如下用法: 1.Devtools global settings properties on yo ...

  9. Spring中@value以及属性注入的学习

    1.简单的Java配置 配置文件(jdbc.properties) jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://1 ...

随机推荐

  1. Java8的stream用法整理

    map 1 直接获取对象的值 this.categoryMapper.selectByIdList(ids).stream().map(Category::getName).collect(Colle ...

  2. LINUX学习-Mysql安装

    一.安装环境 操作系统CentOS6.8 关闭SeLinux和iptables防火墙 二.网络yum源 将下面的软件下载到  /etc/yum.repos.d/   的目录下 官方基础:http:// ...

  3. SYCOJ1018神奇的幻方

    题目-神奇的幻方 (shiyancang.cn) 模拟就对了 因为每一个状态由前一个状态决定,所以只需要记录即可 #include<bits/stdc++.h> using namespa ...

  4. T-SQL创建数据库常用方法2020年10月29日20:12:04网课笔记

    2.接口的作用 第一.方便框架的设计.利于团队的开发. 第二.方便项目拓展.高内聚.低耦合. 3.反射 [1]反射的理解:通过读取程序集的信息,找到相关的类型和类型的成员,也可以得到相关的对象.而这种 ...

  5. Java实现抽奖模块的相关分享

    Java实现抽奖模块的相关分享 最近进行的项目中,有个抽奖的需求,今天就把相关代码给大家分享一下. 一.DAO层 /** * 获取奖品列表 * @param systemVersion 手机系统版本( ...

  6. Selenium_python自动化跨浏览器执行测试

    Selenium_python自动化跨浏览器执行测试(简单多线程案例)  转:https://www.cnblogs.com/dong-c/p/8976746.html 跨浏览器测试是功能测试的一个分 ...

  7. JUC之线程池基础与简单源码分析

    线程池 定义和方法 线程池的工作时控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等待其他线程执行完成,再从队列中取出任 ...

  8. 【vps】Centos 7安装python3.8.5

    [vps]Centos 7安装python3.8.5 前言 由于服务器的搬迁,从香港搬到了大陆,原来的香港服务器即将到期,所以趁着大陆服务器在备案的时候,将新服务器的配置先配置一下.这篇文章就是分享C ...

  9. Java 异步 I/O

    Java 中的异步 I/O 简称 AIO, A 即 Asynchronous.AIO 在 JDK1.7 时引入,基于操作系统提供的异步 I/O 通信模型,封装了一些进行异步 I/O 操作的 API. ...

  10. python中grpc配置asyncio使用

    python中grpc配置asyncio使用 安装grpclib pip3 install grpclib protoc编译.proto文件,生成源码文件 python -m grpc_tools.p ...