Spring+Mybatis多数据源配置(三)——Spring如何获取Properties文件的信息

严格来说,本博文所阐述的内容和这个系列来说,没有什么必要的关系,本博文的主题是:如何使用spring获取properties文件的信息。本博文所采用的用例都和这个系列有关,所以就放在这里讲了。

通过spring的配置(applicationContext.xml),如:<context:property-placeholder location="classpath:config.properties"/>(具体位置可以参考本系列的前两篇博文),这个就配置了spring自动加载当前classpath下的config.properties文件,这个config.properties的内容如下:

# oracle configuration
 ora_driver=oracle.jdbc.driver.OracleDriver
 ora_url=jdbc:oracle:thin:@10.10.195.185:1521:sp5000
 ora_username=shr
 ora_password=shr

 #mysql configuration
 mysql_driver=com.mysql.jdbc.Driver
 mysql_url=jdbc:mysql://10.10.193.111:3306/sp5000?useUnicode=true&characterEncoding=UTF-8
 mysql_username=shr
 mysql_password=shr

 dataSource=oracle

对于applicationContext.xml中的数据源配置如下:

	<bean id="mysql" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" 	value="${mysql_driver}"/>
		<property name="url" 		value="${mysql_url}"/>
		<property name="username" 	value="${mysql_username}"/>
		<property name="password" 	value="${mysql_password}"/>
	</bean>
	<bean id="oracle" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" 	value="${ora_driver}"/>
		<property name="url" 		value="${ora_url}"/>
		<property name="username" 	value="${ora_username}"/>
		<property name="password" 	value="${ora_password}"/>
	</bean>

可以看到如${mysql_driver}这个可以自动读取到config.properties文件中的相应字段的值。

那么java程序中如何获取呢?且看下面这个测试用例:

package com.shr.service.userManage;

import java.util.List;

import javax.inject.Inject;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

import com.shr.dao.model.userManage.UserListInfo;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:WebContent/WEB-INF/applicationContext.xml")
@Transactional
@TransactionConfiguration(transactionManager="transactionManager",defaultRollback=false)
public class UserManageServiceTest {

	@Inject
	private UserManageService userManageService;

	@Value("${ora_driver}")
	private String driver;
	@Value("${ora_url}")
	private String url;
	@Value("${ora_username}")
	private String username;
	@Value("${ora_password}")
	private String password;

	@Test
	public void testConfigProperties()
	{
		System.out.println(driver);
		System.out.println(url);
		System.out.println(username);
		System.out.println(password);
	}
}

运行结果:

oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@10.10.195.185:1521:sp5000
shr
shr

在上面的代码中可以看到通过使用注解 @Value("${ora_driver}")就可以获取config.properties的值。

这些是比较简要的配置,也可以配置的复杂点。可以把:<context:property-placeholder location="classpath:config.properties"/>这个替换成:

<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations">
            <list>
                <value>classpath:*.properties</value>
            </list>
        </property>
    </bean>
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
        <property name="properties" ref="configProperties" />
    </bean>

这样同样可以通过@Value("${ora_driver}")这样的方式获取值,也可以通过@Value("#{configProperties['ora_driver']}")的方式获取值,可以看出后一种方法稍微复杂点,建议采用前一种方式。

时间: 2024-07-28 15:35:57

Spring+Mybatis多数据源配置(三)——Spring如何获取Properties文件的信息的相关文章

Spring+Mybatis多数据源配置(四)——AbstractRoutingDataSource实现数据源动态切换

有时候需要在程序中动态切换数据源,那么这个系列的之前的博文所阐述的方法就不再使用了,总不能通过程序更改config.properties文件的dataSource的值,然后再重启web服务器以便加载applicationContext.xml文件.这里讲诉的是如何利用AbstractRoutingDataSource进行数据源动态切换. 首先上applicationContext.xml文件: <?xml version="1.0" encoding="UTF-8&qu

Spring+Mybatis多数据源配置(一)——MySQL与Oracle通过配置切换

在小型项目中,一般配置一个数据库,也就是一个mybatis数据源,但是有时候需要同时支持两种数据库,比如mysql和oracle. 最笨的方法就是配置两个spring配置文件,然后根据不同的部署,采用不同的配置文件,其实这两个配置文件可以合成一个配置文件,通过java的properties文件进行配置. 首先说明下配置单个数据库,也就是单个数据源的配置. 首先看一下spring的配置文件applicationContext.xml(这里采用的是spring+mybatis,所以有关数据库的及my

Spring+Mybatis多数据源配置(二)——databaseIdProvider的使用

 在上一篇同系列的博文中,讲到配置多数据源,然后根据config.properties配置不同的数据库,进行切换.而且需要根据不同的数据库,配置不同的mybatis sql映射配置文件,如下: <property name="mapperLocations"> <list> <value>classpath:com/shr/dao/resources/${dataSource}mappers/*_mapper.xml</value> &l

spring mybatis多数据源实例详解_java

同一个项目有时会涉及到多个数据库,也就是多数据源.多数据源又可以分为两种情况: 1)两个或多个数据库没有相关性,各自独立,其实这种可以作为两个项目来开发.比如在游戏开发中一个数据库是平台数据库,其它还有平台下的游戏对应的数据库: 2)两个或多个数据库是master-slave的关系,比如有mysql搭建一个 master-master,其后又带有多个slave:或者采用MHA搭建的master-slave复制: 目前我所知道的 Spring 多数据源的搭建大概有两种方式,可以根据多数据源的情况进

spring boot druid mybatis 多数据源 配置

spring boot 在配置时做了很多简化配置的设置,但是简化的配置往往已牺牲一定的定制化,比如在数据源的配置时,spring boot 只提供4种数据库连接池的配置,其中并不支持常用的druid 阅读spring boot DataSourceBuilder 的源码可以发现 spring boot 提供的4种数据源类型并不是我们想要的 private static final String[] DATA_SOURCE_TYPE_NAMES = new String[] { "org.apac

spring+mybatis多数据源配置问题,谁能帮我分析一下问题出在哪儿

问题描述 配置的XML文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework

spring ide-myeclipse中手动配置的spring项目如何加入spring IDE中

问题描述 myeclipse中手动配置的spring项目如何加入spring IDE中 在myeclipse中手动配置的spring项目如何加入spring IDE中?(PS:右击项目没有找到spring tools) 而通过myeclipse自动配置的项目,它就自动在spring IDE.

Spring-Boot + Mybatis 多数据源配置

折腾了一天,终于完成了多数据源的配置,记录在这里! 1,先上SpringBoot 基础配置         ①,系统引入了Security的包,但是没有配置Security相关信息,在启动时会打印警告log,故这里排除SecurityAutoConfiguration这个类 2,配置两个数据源 @Configuration public class DataBaseConfig implements EnvironmentAware { private RelaxedPropertyResolv

spring mvc-关于springMVC mybatis 多数据源配置问题

问题描述 关于springMVC mybatis 多数据源配置问题 12:59:38,349 ERROR [STDERR] SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder] 12:59:38,382 WARN [ConfigurationClassEnhancer] @Bean method SpringIocMappingConfig.mapperScannerC