文档章节

Spring 如何读取properties文件内容

binhu
 binhu
发布于 2015/01/21 14:23
字数 737
阅读 82
收藏 0
点赞 0
评论 0

Spring中config属性文件的读取与使用 PropertyPlaceholderConfigurer 注解@Component

1.配置文件:/WEB-INF/configInfo.properties
配置文件内容:
email.host = www.94gleaner.com
email.port = xxx
email.username = gleaner
email.password = xxx
email.sendFrom = 94gleaner@94gleaner.com

2.Spring容器启动时,使用内置bean对属性文件信息进行加载,在bean.xml中添加如下:

<!– spring的属性加载器,加载properties文件中的属性   方案①-->
<bean id=”propertyConfigurer” class=”org.springframework.beans.factory.config.PropertyPlaceholderConfigurer”>
property name=”location”>
<value>/WEB-INF/configInfo.properties</value>
</property>
<property name=”fileEncoding” value=”utf-8″ />
</bean>

<!--或者通过如下方式加载       方案②-->
<context:property-placeholder location="classpath:ldap.properties" ignore-unresolvable="true"/>



    <!-- 将多个配置文件读取到容器中,交给Spring管理 -->  
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="locations">  
           <list>  
              <!-- 这里支持多种寻址方式:classpath和file -->  
              <value>classpath:/opt/demo/config/demo-db.properties</value>  
              <!-- 推荐使用file的方式引入,这样可以将配置和代码分离 -->  
              <value>file:/opt/demo/config/demo-mq.properties</value>  
              <value>file:/opt/demo/config/demo-remote.properties</value>  
            </list>  
        </property>  
    </bean>

3.其它bean中引用,例:

<property name="host">
       <value>${email.host}</value>
</property>
<property name=”port”>
       <value>${email.port}</value>
</property>

4.JAVA代码中获取方法:创建ConfigInfo.java

@Component("configInfo")
public class ConfigInfo {
@Value("${email.host}")
private String host;
@Value("${email.port}")
private String port;
public String getHost() {
return host;
}
public String getPort() {
return port;
}
}

5.代码中调用

@Autowired
private ConfigInfo configInfo;
public byte[] Test(HttpServletResponse response) {
string host = configInfo.getHost();
}

 

 

 

config.properties配置文件信息

Properties代码  收藏代码

##数据库(mysql|mssql|oracle...)  

environment=mysql  

jdbc.driver=com.mysql.jdbc.Driver  

jdbc.url=jdbc:mysql://127.0.0.1:3306/portal?useUnicode=true&characterEncoding=utf8  

jdbc.user=root  

jdbc.password=root  

#初始化连接(根据实际访问量设置大小)  

jdbc.initialSize=10  

#最大空闲连接(根据实际访问量设置大小)  

jdbc.maxIdle=50  

#最小空闲连接(根据实际访问量设置大小)  

jdbc.minIdle=10  

#最大连接数量(根据实际访问量设置大小)  

jdbc.maxActive=200  

 Spring配置信息(截取部分)

Xml代码  收藏代码

<context:property-placeholder location="classpath:config.properties" />  

  <!--创建jdbc数据源 -->  

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  

  <property name="driverClassName" value="${jdbc.driver}"/>  

 <property name="url" value="${jdbc.url}"/>  

<property name="username" value="${jdbc.user}"/>  

 <property name="password" value="${jdbc.password}"/>  

 <property name="initialSize" value="${jdbc.initialSize}"/>  

<property name="maxIdle" value="${jdbc.maxIdle}"/>  

 <property name="minIdle" value="${jdbc.minIdle}"/>  

<property name="maxActive" value="${jdbc.maxActive}"/>  

 <property name="removeAbandoned" value="true"/>    

  <property name="removeAbandonedTimeout" value="120"/>  

  <property name="maxWait" value="3000"/>  

</bean>  

<!-- 创建SqlSessionFactory,同时指定数据源 -->  

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  

   <property name="dataSource" ref="dataSource"/>  

  <property name="configLocation" value="classpath:mybatis-config.xml"/>  

  <property name="mapperLocations" value="classpath*:com.anly.portal.*.mapper/*Mapper.xml" />   

</bean>  

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  

  <!-- 此处扫描的是Mapper接口 -->  

 <property name="basePackage" value="com.anly.portal.*.mapper"/>  

<property name="sqlSessionFactory" ref="sqlSessionFactory"/>  

</bean>  

 此时,启动会报异常,${jdbc.driver}这样的表达式获取不到properties里面的值,因为MapperScannerConigurer实际是在解析加载bean定义阶段的,这个时候要是设置sqlSessionFactory的话,会导致提前初始化一些类,这个时候,PropertyPlaceholderConfigurer还没来得及替换定义中的变量,导致把表达式当作字符串复制了,解决的办法如下:

 

方法一:

修改<property name="sqlSessionFactory" ref="sqlSessionFactory"/>为<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

原理:使用sqlSessionFactoryBeanName注入,不会立即初始化sqlSessionFactory, 所以不会引发提前初始化问题。

 

方法二:

直接删掉<property name="sqlSessionFactory" ref="sqlSessionFactory"/>

注意:在没有配置这一行时,必须配置一个以sqlSessionFactory命名的org.mybatis.spring.SqlSessionFactoryBean。

© 著作权归作者所有

共有 人打赏支持
binhu
粉丝 17
博文 196
码字总数 199655
作品 0
合肥
Spring SpringMvc 3.0 + MyBatis 整合--补充关于.properties文件的读取

原来发表在csdn的,移动到oschina Spring SpringMvc 3.0 + MyBatis 整合--补充关于.properties文件的读取 Spring SpringMvc + Mybatis 整合 上篇文章中关于.propertis文件的每条记录在xml文件...

王庭 ⋅ 2015/09/19 ⋅ 0

Spring的@Value获取不到值的问题

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

zq17865815296 ⋅ 2017/11/14 ⋅ 0

Spring Boot - Profile配置

Profile是什么 Profile我也找不出合适的中文来定义,简单来说,Profile就是Spring Boot可以对不同环境或者指令来读取不同的配置文件。 Profile使用 假如有开发、测试、生产三个不同的环境,需...

Java技术栈 ⋅ 06/10 ⋅ 0

微服务构建: Spring Boot

在展开 Spring Cloud 的微服务架构部署之前, 我们先了解一下用于构建微服务的基础框架-Spring Boot。 由于 Spring Cloud 的构建基于 Spring Boot 实现, 在后续的示例中我 们将大量使用 Sp...

wenhy ⋅ 昨天 ⋅ 0

说说在 Spring 中如何引用外部属性文件

进行数据源或者 FTP 服务器等资源配置时,我们可以将这些配置信息放到一个独立的外部属性文件中,并在 Spring 配置文件中通过形如 、 的占位符方式来引用属性文件中的属性项 。 这种方式的配...

deniro ⋅ 05/22 ⋅ 0

Spring Cloud Config采用数据库存储配置内容

在之前的《Spring Cloud构建微服务架构:分布式配置中心》一文中,我们介绍的Spring Cloud Server配置中心采用了Git的方式进行配置信息存储。这一设计巧妙的利用Git自身机制以及其他具有丰富...

程序猿DD ⋅ 06/15 ⋅ 0

【死磕Sharding-jdbc】—–基于ssm

原文作者:阿飞Javaer 原文链接:https://www.jianshu.com/p/602e24845ed3 本篇文章讲解如何在ssm(spring、springmvc、mybatis)结构的程序上集成sharding-jdbc(版本为1.5.4.1)进行分库分...

飞哥-Javaer ⋅ 05/05 ⋅ 0

SpringMVC源码剖析(三)- DispatcherServlet的初始化流程

在我们第一次学Servlet编程,学java web的时候,还没有那么多框架。我们开发一个简单的功能要做的事情很简单,就是继承HttpServlet,根据需要重写一下doGet,doPost方法,跳转到我们定义好的...

相见欢 ⋅ 2013/01/15 ⋅ 20

SpringMVC + MyBatis整合

环境:spring3.1.1+mybatis3.2.8+mybatis-spring1.2.3 网络上关于这个架构的搭建文章,实在是太多了,本文是对于本人初次搭建时的一些注意点的整理。 主要是一些配置文件的内容和架构的目录。...

wangbiglei ⋅ 2015/08/08 ⋅ 4

springmvc --java读取配置文件

1.方法1:常规取法 java本身就给我们提供了属性文件的读取方法,即java集合框架中的properties,详见这篇文章介绍 https://my.oschina.net/u/2312022/blog/748813 2.方法2:通过spring注解读...

求是科技 ⋅ 2016/09/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

线程池

一、线程池:提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。 二、线程池的体系结构: java.util.concurrent.Executor : 负责线程的使用...

stars永恒 ⋅ 24分钟前 ⋅ 0

你值5K还是15K?实战案例,测测你的分析功力

本文源自陈老师遇到的真实案例。 老板说:“我们今年准备参加展会,做一年。以前我没参加过,没关系,这里有一份展会数据,你回去分析下哪些有价值,后边组织的时候有个指导”。现在你收到任...

加米谷大数据 ⋅ 25分钟前 ⋅ 0

中文转英文功能

package com.sysware.task.util;import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;import net.sourceforge.pinyin4j.for......

AK灬 ⋅ 26分钟前 ⋅ 0

JNI Java层类关联C/C++层的类

Android开发时,因为要实现某某功能,需要集成算法公司的算法库(so库),这就需要自己编写JNI。 通常这些库提供的接口可以概况成1、初始化 2、算法处理 3、释放 4、打印版本号 初始化后会返...

国仔饼 ⋅ 30分钟前 ⋅ 0

maven下载jar包改为阿里云的maven库

一:修改maven安装路径中conf文件夹下的setting.xml文件 <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/......

夜醒者 ⋅ 30分钟前 ⋅ 0

电商用户行为分析大数据平台相关系列10-基础数据结构分析

电商用户行为分析大数据平台相关系列1-环境介绍 电商用户行为分析大数据平台相关系列2-HADOOP环境搭建 电商用户行为分析大数据平台相关系列3-HIVE安装 电商用户行为分析大数据平台相关系列4...

xiaomin0322 ⋅ 31分钟前 ⋅ 0

使用readLine()方法遇到的坑

下午玩 TCP/IP 的 Socket 通信时,使用 BufferedReader 的 readLine() 遇到了一个坑,现在终于解决了,特此记录下来。 程序很简单,客户段从控制台读取用户输入,然后发送至服务器端,主要代...

孟飞阳 ⋅ 31分钟前 ⋅ 0

基于Hadoop集群的Hive安装配置(Derby数据库)

Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据,提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行(具体的Hive架构大家自行搜索)。接下来主要讲下Hadoop集群下...

海岸线的曙光 ⋅ 32分钟前 ⋅ 0

CoreOS裸机iso安装和相关配置

裸机通过iso安装CoreOS,个人趟了很多坑,以下就是完整的从零开始部署和配置的过程,希望对大家有用。 一、安装CoreOS到硬盘 1. 准备Live iso镜像,制作好usb启动盘 Live iso下载地址 2. 搭建...

ykbj ⋅ 37分钟前 ⋅ 0

jquery控制表格锁列(转)

表格已经完成后新加的需求,要实现锁表格的第一列。很多带这种效果的都是js封装的框架或者具体某种框架的组件,不适用解决当前问题。作为后端开发又实在不熟样式,搜到了一个可以用的,虽然样...

刘昌鑫 ⋅ 39分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部