springboot @ConfigurationProperties和@PropertySource的区别

springboot @ConfigurationProperties和@PropertySource区别

@ConfigurationProperties:寻找的是全局配置文件

@PropertySource:寻找的是指定的配置文件

理解里面有一个参数 value,可以指定很多个配置文件,所以是使用一个数组{}

springboot推荐使用这种方式给容添加组件:

创建一个config包,然后在包下创建一个class

使用@bean给容器中添加组件

springboot 使用@ConfigurationProperties和@PropertySource的问题

在使用Springboot时我们经常把一些key-value的属性值配置在

.properties配置文件中,我们想通过@Value搭配Spring EL来读取配置文件中的值来给我们的变量赋值。

在spring1.5一下提供了一个类注解:

@ConfigurationProperties:

常用的两个属性是:

locations:指定配置文件

prefix:指定该配置文件中的某个属性群的前缀

但是使用spring1.5时,源码部分做了修改,去掉了locations属性,所以另一个注解就上场啦

@PropertySource:

value:这里指定配置文件,替代原来@ConfigurationProperties的locations

encoding:指定读取配置文件时的编码

这个encoding很重要,如果不指定使用默认的话很可能出现读取乱码的情况,我写demo就遇到了,百度了很多解决方案都是从ide工具本身入手,根本不能解决问题,最后还是我自己看注解的源码才发现有这个属性的。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Spring Boot2.0 @ConfigurationProperties使用详解

    引言 Spring Boot的一个便捷功能是外部化配置,可以轻松访问属性文件中定义的属性.本文将详细介绍@ConfigurationProperties的使用. 配置项目POM 在pom.xml中定义Spring-Boot 为parent <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>

  • 解决springboot利用ConfigurationProperties注解配置数据源无法读取配置信息问题

    @ConfigurationProperties是springboot新加入的注解,主要用于配置文件中的指定键值对映射到一个java实体类上.那么它是怎么发挥作用的呢?下面我们将揭开@ConfigurationProperties的魔法. ConfigurationPropertiesBindingPostProcessor这个bean后置处理器,就是来处理bean属性的绑定的,这个bean后置处理器后文将称之为properties后置处理器.你需要知道以下几件事: ioc容器context的e

  • SpringBoot @ConfigurationProperties使用详解

    简介 本文将会详细讲解@ConfigurationProperties在Spring Boot中的使用. 添加依赖关系 首先我们需要添加Spring Boot依赖: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <relativePath/> <!-- lookup

  • 在SpringBoot下读取自定义properties配置文件的方法

    SpringBoot工程默认读取application.properties配置文件.如果需要自定义properties文件,如何读取呢? 一.在resource中新建.properties文件 在resource目录下新建一个config文件夹,然后新建一个.properties文件放在该文件夹下.如图remote.properties所示 二.编写配置文件 remote.uploadFilesUrl=/resource/files/ remote.uploadPicUrl=/resource

  • Spring Boot自定义配置属性源(PropertySource)

    配置覆盖优于profile 在生产实践中,配置覆盖是解决不同环境不同配置的常用方法.比如用生产服务器上的配置文件覆盖包内的文件,或者使用中心化的配置服务来覆盖默认的业务配置. 相比于profile机制(比如maven的profile.spring boot的profile-specific properties),即不同环境使用不同的配置文件,覆盖的方式更有优势.程序员在开发时不需要关心生产环境数据库的地址.账号等信息,一次构建即可在不同环境中运行,而profile机制需要将生产环境的配置写到项

  • springboot @ConfigurationProperties和@PropertySource的区别

    springboot @ConfigurationProperties和@PropertySource区别 @ConfigurationProperties:寻找的是全局配置文件 @PropertySource:寻找的是指定的配置文件 理解里面有一个参数 value,可以指定很多个配置文件,所以是使用一个数组{} springboot推荐使用这种方式给容添加组件: 创建一个config包,然后在包下创建一个class 使用@bean给容器中添加组件 springboot 使用@Configura

  • SpringBoot中注解@ConfigurationProperties与@Value的区别与使用详解

    目录 注解@ConfigurationProperties 注解@Value 区别 松散语法绑定: SpEl语法表示: JSR303数据校验: 复杂类型封装: 配置文件注入值数据校验 注解@ConfigurationProperties 该注解的作用是将配置文件中配置的每一个属性的值,映射到这个组件中.@ConfigurationProperties :告诉springboot将本类中的所有属性和配置文件中相关的配置进行绑定 prefix = "person":配置文件中哪个下面的所有

  • 深入浅析springboot中static和templates区别

    静态页面的return默认是跳转到/static/目录下,当在pom.xml中引入了thymeleaf组件,动态跳转会覆盖默认的静态跳转,默认就会跳转到/templates/下,注意看两者return代码也有区别,动态没有html后缀. 1.1 在static下新建hello1.html 运行程序,浏览器输入http://localhost:8080/hello1.html so,可以在根目录下访问hello1.html,static目录类似于传统Java web中的webroot或webcon

  • Springboot @Validated和@Valid的区别及使用详解

    概述: @Valid是使用Hibernate validation的时候使用 @Validated是只用Spring Validator校验机制使用 说明:java的JSR303声明了@Valid这类接口,而Hibernate-validator对其进行了实现 @Validation对@Valid进行了二次封装,在使用上并没有区别,但在分组.注解位置.嵌套验证等功能上有所不同,这里主要就这几种情况进行说明. 注解位置: @Validated:用在类型.方法和方法参数上.但不能用于成员属性(fie

  • SpringBoot @ConfigurationProperties注解的简单使用

    源码 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ConfigurationProperties { @AliasFor("prefix") String value() default ""; @AliasFor("value") String prefix()

  • 浅谈springboot @Repository与@Mapper的区别

    目录 1.@Repository 2.@Mapper 3.区别 相同点: 不同点: 4.解决使用@mapper接口时,注入mapper爆红问题 今天在用springboot整合mybatis时,mapper接口上用的注解是以前学spring时用的@Repository注解,可一运行,就出现了错误. Error starting ApplicationContext. To display the conditions report re-run your application with 'de

  • springboot @Controller和@RestController的区别及应用详解

    目录 @Controller和@RestController的区别及应用 @Controller和@RestController区别 @Controller的应用 @RestController的应用 @Controller和@RestController区别的小坑 1.如果注解Controller使用@RestController 2.如果需要返回到指定页面(jsp/html) @Controller和@RestController的区别及应用 @Controller和@RestControl

  • springboot如何通过@PropertySource加载自定义yml文件

    目录 @PropertySource加载自定义yml文件 @PropertySource注解对于yml的支持 @PropertySource加载自定义yml文件 使用@PropertySource默认加载的是.xml或者 .properties文件,因为在注解源码默认使用的是DefaultPropertySourceFactory实现处理文件内容,spring使用ResourcePropertySource从Resource构建Properties传给Spring. 系统的应用,比如加载自定义的

  • spring-boot @Component和@Bean的区别详解

    1.@Component 是用在类上的 @Component public class Student { private String name = "lkm"; public String getName() { return name; } public void setName(String name) { this.name = name; } } 2.@Bean 需要在配置类中使用,即类上需要加上@Configuration注解 @Configuration public

随机推荐