一、Spring的@Value

Spring支持在XML配置文件和注解中使用Spring  EL(Spring 表达式语言),Spring EL类似于JSP的EL表达式语言。

在Spring开发中经常涉及调用各种资源的情况,包含普通文件、网址、配置文件、系统环境变量等,我们可以使用Spring的表达式语言实现资源的注入。

程序代码里,Spring主要在@Value注解的参数中使用EL表达式。

  • 注入普通字符串
  • 注入操作系统属性
  • 注入表达式运算结果
  • 注入其他Bean的属性
  • 注入文件内容
  • 注入网址内容
  • 注入属性文件(注意:用的是$符号)
import org.springframework.core.io.Resource;
import org.springframework.core.env.Environment;
import org.apache.commons.io.IOUtils; @Component
public class ELConfig {
@Value("注入普通字符串")// 注入普通字符串
private String normal; @Value("#{systemProperties['os.name']}")// 注入操作系统属性
private String osName; @Value("#{T(java.lang.Math).random() * 100.0 }")// 注入表达式结果
private double randomNumber; @Value("#{payOrderQueryController.payCenterFacade}")// 注入其他Bean属性
private IPayCenterFacade fromAnother; @Value("classpath:test.txt")// 注入文件资源
private Resource testFile; @Value("https://www.baidu.com")// 注入网址资源
private Resource testUrl; @Value("${book.name}")// 注入配置文件【注意是$符号】
private String bookName; @Autowired// Properties可以从Environment获得
private Environment environment; @Override
public String toString() {
try {
return "ELConfig [normal=" + normal
+ ", osName=" + osName //os.name,如Windows 8.1
+ ", randomNumber=" + randomNumber //值如97.53293482705482
+ ", fromAnother=" + fromAnother //别的bean的成员属性
+ ", testFile=" + IOUtils.toString(testFile.getInputStream()) //输出文件里的内容
+ ", testUrl=" + IOUtils.toString(testUrl.getInputStream()) //输出网页的html
+ ", bookName=" + bookName //配置的值
+ ", environment=" + environment.getProperty("book.name") + "]";
} catch (IOException e) {
e.printStackTrace();
return null;
}
} }

二、Spring Boot的@ConfigurationProperties

先看下面的@Value注解:

    @Value("${book.name}")
private String bookName;
@Value("${book.author}")
private String bookAuthor;

上面这种使用@Value注入每个配置在实际项目中会显得格外麻烦,因为我们的配置通常会是许多个,就要使用@Value注入很多次。

Spring Boot提供了基于类型安全的配置方式,通过@ConfigurationProperties将properties属性和一个Bean关联,从而实现类型安全的配置。

@Component
@ConfigurationProperties(prefix = "book")
public class Book { private String name;
private String author;
private int age; //get.. set..
}

application.yml配置:

book:
name: 一个人的朝圣
author: 蕾秋·乔伊斯
age: 35

@ConfigurationProperties有两个属性

  • prefix:指定properties的配置的前缀
  • locations:指定properties文件的位置

Spring @Value注解 and Spring Boot @ConfigurationProperties注解的更多相关文章

  1. spring学习笔记(一)@ConfigurationProperties注解

    结论: 这个注解主要是为了将配置文件中的属性映射到实体类上,并且支持嵌套映射. 代码说明: @ConfigurationProperties(prefix = "person") ...

  2. spring 、spring boot 常用注解

    @Profile 1.用户配置文件注解. 2.使用范围: @Configration 和 @Component 注解的类及其方法, 其中包括继承了 @Component 的注解: @Service. ...

  3. 在Spring Boot中使用 @ConfigurationProperties 注解

    但 Spring Boot 提供了另一种方式 ,能够根据类型校验和管理application中的bean. 这里会介绍如何使用@ConfigurationProperties.继续使用mail做例子. ...

  4. 在Spring Boot中使用 @ConfigurationProperties 注解, @EnableConfigurationProperties

    但 Spring Boot 提供了另一种方式 ,能够根据类型校验和管理application中的bean. 这里会介绍如何使用@ConfigurationProperties.继续使用mail做例子. ...

  5. Spring Boot 之注解@Component @ConfigurationProperties(prefix = "sms") 使用@ConfigurationProperties读取yml配置

    从spring-boot开始,已经支持yml文件形式的配置,@ConfigurationProperties的大致作用就是通过它可以把properties或者yml配置直接转成对象 @Componen ...

  6. Spring Boot 2 实践记录之 使用 ConfigurationProperties 注解将配置属性匹配至配置类的属性

    在 Spring Boot 2 实践记录之 条件装配 一文中,曾经使用 Condition 类的 ConditionContext 参数获取了配置文件中的配置属性.但那是因为 Spring 提供了将上 ...

  7. Spring Boot中@ConfigurationProperties注解实现原理源码解析

    0. 开源项目推荐 Pepper Metrics是我与同事开发的一个开源工具(https://github.com/zrbcool/pepper-metrics),其通过收集jedis/mybatis ...

  8. Spring Boot使用@ConfigurationProperties注解获取配置文件中的属性值

    注意:这种方式要提供属性的getter/setter方法—— 如果idea报错,提示没有相应的执行器,就需要在maven中添加: (虽然不配置代码也能正常运行,作用在下面会说明) 配置了该执行器后,在 ...

  9. Spring Boot常用注解总结

    Spring Boot常用注解总结 @RestController和@RequestMapping注解 @RestController注解,它继承自@Controller注解.4.0之前的版本,Spr ...

随机推荐

  1. Hibernate控制insert\update语句

  2. tomcat集群时统计session与在线人数

    tomcat集群时,原来通过HttpSessionListener实现类监听session的创建和销毁来统计在线人数的方法不再有效,因为不是每个人登陆都会在同一个tomcat服务器上,而在另一台tom ...

  3. ArrayList源码解析

    ArrayList简介 ArrayList定义 1 public class ArrayList<E> extends AbstractList<E> implements L ...

  4. Json 的日期格式转换成DateTime

    JSON 的日期形式:”/Date(1242357713797+0800)/” , 下面我们就用以下C#的方法将他转换成DateTime类型: /// <summary> /// Json ...

  5. enum类型被intent所携带时需要注意的地方

    一般我们在Activity之间传递对象时多用Parcelable.比如写一个class,在这个class上标明implements Parcelable并实现接口就可以用Intent.putExtra ...

  6. RBF network

    1.radial basis function RBF表示某种距离,$\mu_m$为中心点,相当于将点$x$到中心点的某种距离作为特征转换 Output方法可以根据需求任意选取(比如使用SVM,log ...

  7. C#调用C++动态库时类型转换

    因为本人主要从事c#开发,但是在工作中经常需要用到c++编写的DLL,因此需要知道c++中的类型与c#中的类型是如何转换的.搜集整理如下. //C++中的DLL函数原型为   //extern &qu ...

  8. js 拼接table 的方法

    <html> <head> <title>test page</title> <script type='text/javascript'> ...

  9. Cookie与 Session使用详解

    Cookie概念 在浏览某些 网站 时,这些网站会把 一些数据存在 客户端 , 用于使用网站 等跟踪用户,实现用户自定义 功能. 是否设置过期时间: 如果不设置 过期时间,则表示这个 Cookie生命 ...

  10. SQL Server导入导出不丢主键和视图的方法

    SQL Server导入导出 SQL Server 导入导出 工具/原料 使用Microsoft SQL Server Management Studio 导入导出数据. 直接使用Microsoft  ...