文档章节

Spring加载properties文件

臭水沟
 臭水沟
发布于 2015/06/05 11:50
字数 328
阅读 59
收藏 0

注:本文的实现方式全部都是用javaconfig,无任何的xml.


spring提供了一个类:PropertySourcesPlaceholderConfigurer来加载properties,

先帖上实现代码:

@Configuration
@SuppressWarnings("UnusedDeclaration")
public class PropertySourcesConfig {
    private static final Resource[] DEV_PROPERTIES = new ClassPathResource[]{
            new ClassPathResource("app-dev.properties"),
    };
    
    @Profile("dev")
    @PropertySource(value = {"classpath:app-dev.properties"})
    @SuppressWarnings("UnusedDeclaration")
    public static class DevConfig {
    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
        PropertySourcesPlaceholderConfigurer pspc = new PropertySourcesPlaceholderConfigurer();
        pspc.setLocations(DEV_PROPERTIES);//可以加载多个
        return pspc;
    }
}
}

注解说明:

@Profile("dev")  :  如果当前的环境是dev, 那么就加载此配置 一般和 @ActiveProfiles(value = "dev")一起使用, 其他方式请自行google.

@PropertySource  :  只会将配置文件的内容加载到Environment对象中, 而不能进行javabean的属性进行占位符的替换,所以进程和PropertySourcesPlaceholderConfigurer一起使用.

使用PropertySourcesPlaceholderConfigurer的好处是:可以对javabean的属性进行占位符的替换如下:

public class User {
    @Value("${userName}")
    private String userName;
}

如果直接获取某个属性key对应的值那么可以使用Environment对象,如进行datasource配置

public class AppConfig {
    
    @Inject
    private Environment env;
    
    @Bean(name = "dataSource")
    @Profile({"dev"})
    public DataSource dataSource() {
        final BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName(env.getProperty("db.driverClassName"));
        dataSource.setUrl(env.getProperty("db.url"));
        dataSource.setUsername(env.getProperty("db.user"));
        dataSource.setPassword(env.getProperty("db.password"));
        dataSource.setValidationQuery("select 1");
        return dataSource;
    }
}





© 著作权归作者所有

共有 人打赏支持
臭水沟
粉丝 1
博文 1
码字总数 328
作品 0
三亚
Spring的@Value获取不到值的问题

一、问题背景 这两天做东西的时候发现一个问题,在SpringMVC中使用@Value的时候,无法获取@Value对应的值。在网上查阅了各种资料之后,总结一下。 二、@Value注解的作用。 为了减小耦合度,通...

zq17865815296
2017/11/14
0
0
Spring/Maven/MyBatis配置文件结合properties文件使用

使用properties文件也叫注入,比如把一些常用的配置项写入到这个文件,然后在Spring的XML配置文件中使用EL表达式去获取。 这种方式不只Spring可以使用,同样MyBatis也可以使用,只不过加载的...

easonjim
2017/06/24
0
0
Spring Boot核心配置

启动类 在包根目录下添加启动类,必须包含main方法,再添加Spring Boot启动方法: 或者流式API 下面是一个典型的Spring Boot工程包布局,Application启动类位于根目录下 核心注解 启动类上面...

Java技术栈
06/10
0
0
Spring Boot 核心配置文件 bootstrap & application 详解。

用过 Spring Boot 的都知道在 Spring Boot 中有以下两种配置文件 bootstrap (.yml 或者 .properties) application (.yml 或者 .properties) 为什么会有这两种配置文件呢?大家都清楚它们的区...

Java技术栈
07/24
0
0
《Spring Recipes》第二章笔记:Loading External Resources

《Spring Recipes》第二章笔记:Loading External Resources 问题 程序需要从不同的位置(文件系统,classpath,URL)读取不同类型的资源(如文本文件,XML文件,properties文件或者图片)。程...

LiJIaming
2012/05/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring详解

Spring详解(一)------概述 目录 1、什么是 Spring ? 2、Spring 起源 3、Spring 特点 4、Spring 框架结构 5、Spring 框架特征 6、Spring 优点   本系列教程我们将对 Spring 进行详解的介绍...

DemonsI
15分钟前
0
0
CentOS7系统Nginx安装

1、下载nginx,官方网站https://nginx.org wget https://nginx.org/download/nginx-1.14.0.tar.gz 2、下载Nginx Sticky Module,官方网站https://bitbucket.org/nginx-goodies/nginx-sticky-......

m_lm
18分钟前
0
0
使用zTree树控件(二)

1:treeNode.checked用于判断是勾选还是取消勾选。(treeNode指的是节点)

uug
19分钟前
0
0
export, import 和 export default的区别

ES6的两个功能: export 和 import export 对外输出模块 import 引入(加载)进来一个模块 一、export => import 单个变量 export var name = "lishi" 在其他文件里引用 import {name} f...

Js_Mei
23分钟前
1
0
打造RecyclerView的n级列表

先上效果图: 1.该多级列表的优势: 支持无限级列表展开 基于一个recyclerView实现 可以自定义每一级item的样式,定制化更强 2.设计的思路 数据结构List<ItemBean>,ItemBean类中有变量List<...

WelliJohn
33分钟前
1
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部