Spring读取配置项

Spring读取Properties文件

resources/app.properties文件

name=hello
age=23

Environment读取配置文件

指定数据源,注入Environment对象。

复制代码
@Configuration
@PropertySource("classpath:app.properties")
public class EnvironmentStyleConfig{

    @Autowired
    private Environment env;

    @PostConstruct
    public void println(){
        System.out.println("name=" + env.getProperty("name"));
        System.out.println("age=" + env.getProperty("age"));
    }

}
复制代码

用到的方法主要有:

  • env.getProperty("name");获取String类型
  • env.getRequiredProperty("name");获取String类型而且不能为空,为空则报错
  • env.getProperty("fistname", "无名");获取String类型,如果为空则附一个默认值
  • env.getProperty("age", Integer.class);获取指定类型的值
  • env.getProperty("myage", Integer.class, 0);获取指定类型的值,如果为空则设置一个默认值

使用占位符

指定数据源,使用@Value(“${name}”)

复制代码
@Configuration
@PropertySource("classpath:app.properties")
public class PlaceholderStyleConfig {

    @Value("${name}")
    private String name;

    @Value("${age}")
    private Integer age;

    /**
     * Spring 4.0.7.RELEASE的话还需要配置PropertySourcesPlaceholderConfigurer
     *
     * @return
     */
    @Bean
    public PropertySourcesPlaceholderConfigurer placeholder() {
        return new PropertySourcesPlaceholderConfigurer();
    }

    @PostConstruct
    public void println() {
        System.out.println("name=" + name);
        System.out.println("age=" + age);
    }
}
复制代码

使用SpEL 

复制代码
@Configuration
@PropertySource("classpath:app.properties")
public class SpELStyleConfig {

    @Value("#{environment['name']}")
    public String name;

    @PostConstruct
    public void println() {
        System.out.println("name=" + name);
    }
}
复制代码

使用原生的Properties加载配置项

复制代码
@Configuration
public class PropertiesStyleConfig {

    private Properties properties;

    public Properties getProperties() {
        return properties;
    }

    @PostConstruct
    public void loadConfig() {
        InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("app.properties");
        properties = new Properties();
        try {
            properties.load(inputStream);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        System.out.println("name:" + properties.getProperty("name") + ",age:" + properties.getProperty("age"));
    }
}
复制代码

 

posted @   残城碎梦  阅读(273)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示