zoukankan      html  css  js  c++  java
  • Spring @Value注解 and Spring Boot @ConfigurationProperties注解

    一、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文件的位置
  • 相关阅读:
    图片转字符图片(三)
    图片转字符图片(二)
    图片转字符图片(一)
    github访问不到,登陆不上
    jdk安装错误1316,jdk-10.0.1
    windows安装mongodb
    T4模板使用-初探
    Sql server 查看表引用、依赖项,删除表及约束 脚本
    安装ORACLE provider for OLE DB
    Windows Server 2012 r2 显示计算机图标
  • 原文地址:https://www.cnblogs.com/buguge/p/8678427.html
Copyright © 2011-2022 走看看