ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring注解之@PropertySource注解加载配置文件的属性

2022-02-09 17:36:52  阅读:172  来源: 互联网

标签:PropertySource 配置文件 private id user import 注解 properties User


  注解@Value和@ConfigurationProperties可以用于获取配置文件的属性值,不过有个细节容易被忽略,那就是二者在Spring Boot项目中都是获取默认配置文件的属性值,也就是application.yml或者application.properties的属性值,如果想引用其它配置文件的属性值,就需要使用本篇博文的主角@PropertySource注解。

  使用@PropertySource获取对应的properties文件,再用@ConfigurationProperties或者@Value进行属性映射。在application.properties中配置user.properties文件的路径:

config.path= classpath:self/user.properties

user.properties的配置信息如下:

user.id= 1000
user.userName= root
user.msg= true or not
user.age= 1
user.mobilePhone=15190977799
user.address.tel= 0370-97708099
user.address.name=商丘

  创建一个Bean,用于展示配置的信息,

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

@Getter
@Setter
@Component
//方式①
//@PropertySource("classpath:self/user.properties")
//方式②
@PropertySource(value = {"${config.path}"}, encoding= "UTF-8")
@ConfigurationProperties(prefix = "user")
public class User implements Serializable {
    //实现serializable接口
    private static final long serialVersionUID = -5259637730100548689L;

    private Long id;
    private String userName;
    private String msg;
    private Integer age;
    private Address address;
    private String mobilePhone;
    private String remark;

    /**
     * 无参构造器,服务启动过程中就加载
     */
    public User() {
        System.out.println("正在初始化 user");

    }

    public User(Long id, String userName, Integer age) {
        this.id = id;
        this.userName = userName;
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", msg='" + msg + '\'' +
                ", age=" + age +
                ", address=" + address +
                ", mobilePhone='" + mobilePhone + '\'' +
                ", remark='" + remark + '\'' +
                '}';
    }
}

  如上两种方式都可以配置指定的文件并读取其中的属性。测试用例如下:

    @Autowired
    private User user;// 不要用 new User()
    @PostMapping("/getUser")
    public User getUser() {
        logger.info("执行结果user = {}", user);
        return user;
    }

  工欲善其事,必先利其器。性能与效率是程序猿永恒的追求,对代码如此,对日常搬砖亦如此。Wiener祝愿各位同仁Work Life Balance,效率高,错误少,回家早...

标签:PropertySource,配置文件,private,id,user,import,注解,properties,User
来源: https://www.cnblogs.com/east7/p/15875925.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有