ITPub博客

首页 > IT职业 > IT生活 > (七)SpringBoot2.0基础篇- application.pr

(七)SpringBoot2.0基础篇- application.pr

IT生活 作者:devinw 时间:2021-09-09 09:19:38 0 删除 编辑

注:由于测试代码较多,影响查看效果,所以只放了核心代码,如需查看,请点示例代码

  1. 默认访问的属性文件为application.properties文件,可在启动项目参数中指定spring.config.location的参数:

    java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

    参考官方文档:https://docs.spring.io/spring-boot/docs/2.0.2.RELEASE/reference/htmlsingle/#boot-features-external-config-application-property-files

  2. 使用@PropertySource来获取配置文件的中属性值(注意:在使用该注解时,属性文件必须为properties文件,yaml文件不可用):

    图片描述

    @Configuration
    @PropertySource("classpath:/app.properties")public class AppConfig {
    
        @Autowired
        Environment env;
    
        @Bean    public TestBean testBean() {
            TestBean testBean = new TestBean();
            testBean.setName(env.getProperty("testbean.name"));        return testBean;
        }   
    }

    图片描述

    参考官方文档:https://docs.spring.io/spring/docs/5.0.6.RELEASE/javadoc-api/org/springframework/context/annotation/PropertySource.html

  3. 使用@Value注解直接将属性值注入进修饰对对象中:

    图片描述

    import org.springframework.stereotype.*;import org.springframework.beans.factory.annotation.*;
    
    @Componentpublic class MyBean {
    
        @Value("${name}")    private String name;    // ...}

    图片描述

    参考官方文档:https://docs.spring.io/spring-boot/docs/2.0.2.RELEASE/reference/htmlsingle/#boot-features-external-config

  4. 使用@ConfigurationProperties(prefix="my")将属性值注入进对象,可以注入对象的属性key的对象,也可以注入进List或Set中,但是属性的书写需要有规范:

    my.servers0=dev.example.com
    my.servers1=another.example.com

    使用方式

    图片描述

    @ConfigurationProperties(prefix="my")public class Config {    //set,list不需要Setter方法
        private List servers = new ArrayList();    public List getServers() {        return this.servers;
        }
    }

    图片描述

    参考官方文档:https://docs.spring.io/spring-boot/docs/2.0.2.RELEASE/reference/htmlsingle/#boot-features-external-config-loading-yaml

  5. 可以使用yaml文件格式来替换properties,属性获取方式不变(注:yaml文件后缀名为.yml)

  6. 使用POJO方式直接将属性注入进实体对象中:

    application.yml

    图片描述

    acme:
        remote-address: 192.168.1.1
        security:
            username: admin
            password: admincss
            roles:            - USER            - ADMIN

    图片描述

    AcmeProperties.java

    图片描述

    package com.example;import java.net.InetAddress;import java.util.ArrayList;import java.util.Collections;import java.util.List;import org.springframework.boot.context.properties.ConfigurationProperties;
    
    @ConfigurationProperties("acme")public class AcmeProperties {    private InetAddress remoteAddress;    private final Security security = new Security();    public InetAddress getRemoteAddress() { ... }    public void setRemoteAddress(InetAddress remoteAddress) { ... }    public Security getSecurity() { ... }    public static class Security {        private String username;        private String password;        private List roles = new ArrayList(Collections.singleton("USER"));        public String getUsername() { ... }        public void setUsername(String username) { ... }        public String getPassword() { ... }        public void setPassword(String password) { ... }        public List getRoles() { ... }        public void setRoles(List roles) { ... }
    
        }
    }

    图片描述

 

参考文档:https://docs.spring.io/spring-boot/docs/2.0.2.RELEASE/reference/htmlsingle/#boot-features-external-config-typesafe-configuration-properties

代码示例:https://gitee.com/lfalex/spring-boot-example/tree/dev/spring-boot-properties

原文出处

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2715/viewspace-2802213/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: PHP命名空间
请登录后发表评论 登录
全部评论

注册时间:2019-08-16

  • 博文量
    83
  • 访问量
    760