文档章节

SpringBoot配置文件注入相关

AskaJohnny
 AskaJohnny
发布于 2019/12/15 08:52
字数 818
阅读 21
收藏 0

SpringBoot配置相关

1.配置文件注入

  在SpringBoot里可以通过四个注解进行配置文件的注入,分别是:

@ConfigurationProperties   @Value@PropertySource@ImportResource

  1.@ConfigurationProperties 使用方式

 居中比如我的配置文件application.yml里面是这种

person:
 lastName: hello
 age: 18
 boss: false
 birth: 2017/12/12
 maps: {k1: v1,k2: 12}
 lists:
  - lisi
  - zhaoliu
 dog:
   name: 小狗
   age: 12

 JavaBean

/**
- 将配置文件中配置的每一个属性的值,映射到这个组件中
- @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;prefix = "person":指定 配置文件中哪个前缀下面的所有属性进行 一一 映射
	- 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能,
	- 使其成为组件可以通过下面的两种中的任何一种方式
	    1.@Component //如果这里添加了注解那么在自动配置类的时候就不用添加	
	    2.@EnableConfigurationProperties(Person.class)注解.
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

	private String lastName;
	private Integer age;
	private Boolean boss;
	private Date birth;

	private Map<String,Object> maps;
	private List<Object> lists;
	private Dog dog;
}

 2.@Value 使用方式

 @Value 只能从application.yml中读取

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {

//lastName必须是邮箱格式
	@Email
	@Value("${person.last-name}")  
	private String lastName;
	@Value("#{11*2}")
	private Integer age;
	@Value("true")
	private Boolean boss;

 3.@ConfigurationProperties 和 @Value 取值比较和使用场景

compare.png

 如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;  如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

 4.@PropertySource 使用方式

 @PropertySource:加载指定的配置文件(非application.yml);必须要加 @Component,让其spring进行管理  需要配合@ConfigurationProperties(prefix = "") 指定prefix 绑定到JavaBean中

* 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
*  @ConfigurationProperties(prefix = "person”) 默认从全局配置文件中获取值 即默认只能从 application.properties 或者 application.yml 中获取;
*
*/
@Component
@ConfigurationProperties(prefix = "person")
@PropertySource(value = {"classpath:person.properties"})
@Data
public class PersonConfig {
	
	private String lastName;
	private String firstName;

}

 person.properties 文件

person.lastName=johnny
persong.firstName=candy

 5.@ImportResource

导入Spring的配置文件 xml 格式的 放在 主运行类上,Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别

 想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上

@ImportResource(locations = {"classpath:bean.xml"})
@SpringBootApplication
public class SpringBoot01HelloworldQuickApplication {
}

bena.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="helloService" class="com.atguigu.springboot.service.HelloService"></bean>
</beans>

2.配置文件处理器

 作用: 配置文件处理器的主要作用是为了 在编写配置文件的时候有提示功能

 方式1 在pom.xml文件里引入以下依赖:

   <--导入配置文件处理器,配置文件进行绑定就会有提示-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>

 方式2 在IDEA创建Spring-Boot项目的时候 勾选

configureProcess.png

个人博客系统:https://www.askajohnny.com 欢迎访问! 本文由博客一文多发平台 OpenWrite 发布!

© 著作权归作者所有

AskaJohnny
粉丝 0
博文 18
码字总数 24520
作品 0
无锡
私信 提问
SpringBoot启动原理及相关流程

一、springboot启动原理及相关流程概览 springboot是基于spring的新型的轻量级框架,最厉害的地方当属自动配置。那我们就可以根据启动流程和相关原理来看看,如何实现传奇的自动配置 二、spr...

java菜分享
2019/04/23
18
0
SpringBoot 学习二:操作数据库

本文将从以下几个方面介绍: 前言 配置数据源 SpringBoot 整合 Mybatis SpringBoot 整合 JdbcTemplate SpringBoot 整合 Redis 前言 在上篇文章 SpringBoot 学习一 中已经学习了 SpringBoot的...

tsmyk0715
2018/09/26
934
0
SpringBoot之旅第二篇-配置

一、引言 虽然springboot帮我们进行了自动配置,但配置还是不可避免的,比如最简单的端口号,数据库连接。但springboot的配置一般不用xml进行配置,而是yml和properties,选择他们当然是因为...

花漾年华
2019/05/11
43
0
springboot系列三、spirngboot中配置文件详解

一、配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的,配置文件主要分为以下两种 •application.properties •application.yml 配置文件的作用:修改SpringBoot自动配置的默...

我叫小糖主
2019/06/11
313
2
SpringBoot下Redis相关配置是如何被初始化的

参考网页 SpringBoot集成Redis的原理 https://blog.csdn.net/hry2015/article/details/74276423 https://blog.csdn.net/hry2015/article/details/75451705 application.yml配置文件中的属性是......

karma123
2018/07/17
1.1W
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 宇宙银河乱弹英雄传 —— @FalconChen

1Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @巴拉迪维 :Axxis的单曲《Only God Knows》 最近只听摇滚,挖了好多以前没听过的歌,蛮好。#今日歌曲推荐# 《Only God Knows》- Axxis 手机...

小小编辑
今天
177
2
Safari Date() 函数对日期时间字符串(yyyy-MM-dd HH:mm:ss) 提示NaN的问题

今天发现一个奇怪的问题,在iPhone使用 safari 选择定时发布文章到OSC,选择时间后提示不是合法的时间,判断时间的代码如下: var d = new Date('2020-01-23 23:15'); if (isNaN(d)) {...

FalconChen
昨天
124
0
ActiveMQ学习之通讯协议

一、支持的通讯协议 ActiveMQ支持的client-broker通讯协议有:TCP、NIO、UDP、SSL、HTTP(S)、VM 其中配置Transport Connector的文件在ActiveMQ安装目录的conf/activemq.xml中的<TransportCon...

冥焱
昨天
91
0
应急广播户户通平台

一、平台概述 应急广播户户通平台为软硬一体化广播服务解决方案。实现了应急广播、视音频及图片文字信息、调频及数字广播FM、天气预报信息接收功能,以及视音频播放、智能机器人、电子日历等...

neocean
昨天
133
0
如何为Apache 2.2启用mod_rewrite

我已经在我的Vista机器上安装了新的Apache 2.2,一切正常,除了mod重写。 我没有注释 LoadModule rewrite_module modules/mod_rewrite.s 但是我的重写规则都没有,即使是简单的重写规则 Re...

javail
昨天
53
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部