SpringBoot配置文件值注入的几种方式

在使用springboot项目开发的时候,像数据库配置信息这些我们更希望他配置在专门的文件,这样发版可以方便运维来进行维护,下面提供以下几种方式供大家学习。

一、@ConfigurationProperties

作用:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;

这是本人的另一篇博客,对该注解讲解了一下基本用法。

链接: 相关讲解.

二、@Value

application.properties,用yml文件也是可以的。
这里填写数据库链接信息

datasource.url=123
datasource.username=456
datasource.password=789
datasource.gw-url=127.0.0.1

存放数据库信息的表,这里我们将它注入到容器当中,用的时候直接从容器当中取即可。

@Component
public class DruidDBConfig {
	@Value("${datasource.url}")  
    private String url;  
    
    @Value("${datasource.username}")  
    private String username;  
    
    @Value("${datasource.password}")  
    private String password; 
    
    @Value("${datasource.gw-url}")  
    private String gwUrl;
}

junit测试,成功获取到配置文件注入的值
在这里插入图片描述
他的实际原理其实就是跟xml当中的bean一样,依靠set方法对bean进行赋值,并存放到容器。

<bean class="Person">
     <property name="lastName" value="字面量/${key}从环境变量、配置文件中获取值/#{SpEL}"></property>
<bean/>

三、@ConfigurationProperties和@Value绑定的区别

1、松散绑定:

这个指的是驼峰命名。
假如用的@ConfigurationProperties方式:properties当中写的person.last-name,而java当中的属性名称private String lastName;写成这样照样可以注入值,而@Value注解是不可以的。

2、SpEL支持

SpEL(Spring Expression Language),即Spring表达式语言,是比JSP的EL更强大的一种表达式语言。为什么要总结SpEL,因为它可以在运行时查询和操作数据,尤其是数组列表型数据,因此可以缩减代码量,优化代码结构。

@Value("#{表达式}")
public String arg;

@Value("#{11*2}")
private Integer age;

3、JSR303数据校验

JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator。
此实现与 Hibernate ORM 没有任何关系。 JSR 303 用于对 Java Bean 中的字段的值进行验证。

在类上添加@Validated这个注解然后就开启了校验注解。然后我们就可以使用他的一些特殊注解,比如@Email

4、复杂类型封装

@ConfigurationProperties可以对map以及list等集合赋值,而@Value是不可以的。

5、总结

在这里插入图片描述

三、@PropertySource

作用:加载指定的配置文件;
上面所述的两个注解都是注入值,并且值都是在application主配置文件配置,才能注入。
我们可以使用@PropertySource来将一些固定信息配置独立出来一个配置文件。
他是可以和@ConfigurationProperties和@Value一起来使用的。
用法详解:
创建DruidDBConfig.properties

datasource.url=123
datasource.username=456
datasource.password=789
datasource.gw-url=127.0.0.1
package com.atguigu.springboot.bean;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@Component
@PropertySource(value = {"classpath:DruidDBConfig.properties"})
public class DruidDBConfig {
	
	
	@Value("${datasource.url}")  
    private String url;  
    
    @Value("${datasource.username}")  
    private String username;  
    
    @Value("${datasource.password}")  
    private String password; 
    
    @Value("${datasource.gw-url}")  
    private String gwUrl;

	@Override
	public String toString() {
		return "DruidDBConfig [url=" + url + ", username=" + username + ", password=" + password + ", gwUrl=" + gwUrl
				+ "]";
	}
}

junit测试依然可以取到值
在这里插入图片描述

四、@ImportResource

有一些小伙伴在使用过程当中老是弄混他和@PropertySource的区别

@ImportResource作用::导入Spring的配置文件,让配置文件里面的内容生效;

还有一个跟这个注解相似,那就是@Import,他可以直接加载类配置文件,使用这个注解加载的类会直接存放到IOC容器当中。

@ImportResource可以用来加载xml配置文件

想让Spring的xml配置文件生效,加载进来;@ImportResource标注在一个配置类上,启动类也是可以的。

@ImportResource(locations = {"classpath:beans.xml"}) 
导入Spring的配置文件让其生效

编写Spring的配置文件

<?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.gzl.springboot.service.HelloService"></bean> 
</beans>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot中,我们可以使用多种类型的全局配置文件来配置应用程序,包括: 1. application.properties:这是最常用的全局配置文件类型,它采用键对的形式来配置应用程序,例如: ``` server.port=8080 logging.level.root=INFO spring.datasource.url=jdbc:mysql://localhost/test ``` 在application.properties文件中,我们可以配置应用程序中的各种属性,如服务器端口、日志级别、数据库连接等。 2. application.yml:这是另一种全局配置文件类型,采用YAML格式来配置应用程序,例如: ``` server: port: 8080 logging: level: root: INFO spring: datasource: url: jdbc:mysql://localhost/test ``` 在application.yml文件中,我们可以使用缩进来表示属性之间的层次关系,使得配置文件更加易读。 需要注意的是,在Spring Boot中,application.properties和application.yml是互相替换的,也就是说,我们可以使用其中的任意一种来配置应用程序。 除了这两种全局配置文件类型外,还有一些其他的全局配置文件类型,可以通过在classpath中添加相应的配置文件来加载。例如: 3. application.xml:这是一种基于XML格式的全局配置文件类型,使用Spring的XML配置格式来配置应用程序。 4. application.groovy:这是一种基于Groovy的全局配置文件类型,使用Groovy脚本来配置应用程序。 需要注意的是,无论使用哪种类型的全局配置文件,都需要将其放置在classpath:/config或classpath:/目录下,Spring Boot会自动加载这些配置文件,并将它们的属性注入到应用程序中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪 咖@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值