注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT国子监

 
 
 

日志

 
 
关于我

在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)

网易考拉推荐

如何把dataSource中的数据库配置参数放入database.properties中管理  

2012-10-19 07:41:15|  分类: spring |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

    如何把dataSource中的数据库配置参数放入database.properties中管理


      在软件开发中,因为我们会涉及到很多地方用到相关的数据库信息配置,还有一些定制的一些参数信息。这些有时候因为不在一个地方,但都是在一个地方使用,这就给我们带来了很多不便。今天我想给大家介绍的这个类大家也许听过,也许现在的项目也正在使用,现在我总结整理了一下。希望给那些还在迷茫的菜农们一些帮助,也可以给那些快要忘记的老菜农们一些小小的回忆机会。

需要的类:

   PropertyPlaceholderConfigurer.class

所在位置:

   spring.jar包中,org\springframework\beans\factory\config路径下

作用:

   能够将BeanFactory的里定义的内容放在一个以. properties后缀的文件中该类被实现为Bean工厂的后处理器,并将使用定义在文件中的属性来代替所有的占位符(${...}value利用这种技术,我们可以从applicationContext.xml中移除所有特定于主机的配置属性。通过这种方式,我们可以自由地为该文件添加新的Bean,而不必担心特定于主机属性的同步性。这样可以简化生产部署和维护。

适用条件:
1.BeanFactory的情况下它被手动的执行。
2.ApplicationContext的条件下它会自动的执行。

类中参数相关说明:

Xml代码 
  1. <!---order代表加载顺序--->  
  2. <property name="order" value="1" />  
  3.   
  4. <!--- ignoreUnresolvablePlaceholders代表加载顺序--->  
  5. <property name="ignoreUnresolvablePlaceholders" value="true" />   
  6.   
  7. <!---location指的是包含一个properties文件--->  
  8. <property name="location">  
  9.   
  10. <!---location指的是包含多个properties文件--->  
  11.       <property name=" locations">  

实例:


applicationContext.xml 文件:


Xml代码 
  1. <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
  2.   
  3. <beans>      
  4.   
  5. <bean id="propertyConfigurer"        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">         
  6.      <property name="location">             
  7.         <value>classpath:com/starxing/test/jdbc.properties</value>  
  8.      </property>  
  9.      <!-- 使用locations属性定义多个配置文件         
  10.      <property name="locations">              
  11.             <list>                  
  12.                <value>classpath: log.properties</value>                  
Xml代码 
  1.    <value>classpath: system.properties</value>  
  2.    <value>classpath: database.properties</value>              
  3.   
  4. </list>  
Xml代码 
  1.         </property>  
  2.   
  3. </bean>    
  4.   
  5. <bean id="dataSource"        class="org.springframework.jdbc.datasource.DriverManagerDataSource">         
  6.  <property name="url">              
  7. <value>${database.url}</value>   
  8.  </property>          
  9. <property name="driverClassName">   
  10.  <value>${database.driver}</value>          
  11. </property>          
  12. <property name="username">             
  13. <value>${database.user}</value>          
  14. </property>         
  15.  <property name="password">            <value>${database.password}</value>          
  16. </property>      
  17. </bean>  
  18. </beans>  


database.properties文件:


  1. database.driver = com.mysql.jdbc.Driver  
  2. database.url=jdbc:mysql://localhost:3306/example&useUnicode=true&characterEncoding=utf8  
  3. database.user = root  
  4. database.password =root  

Config.java文件(测试类):


Java代码 
  1. import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;  
  2. import org.springframework.beans.factory.xml.XmlBeanFactory;  
  3. import org.springframework.context.ApplicationContext;  
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  5. import org.springframework.core.io.FileSystemResource;  
  6. import org.springframework.jdbc.datasource.DriverManagerDataSource;  
  7. public class Config {      
  8.   
  9.   
  10.  public static void main(String[] args) {          
  11.   
  12.     XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource("applicationContext.xml"));          
  13.       // 如果要在BeanFactory中使用,bean factory post-processor必须手动运行:        
  14.     PropertyPlaceholderConfigurer cfg = new PropertyPlaceholderConfigurer();          
  15.     cfg.setLocation(new FileSystemResource("database.properties"));          
  16.     cfg.postProcessBeanFactory(factory);          
  17.     DriverManagerDataSource dataSource = (DriverManagerDataSource) factory.getBean("dataSource");          
  18.     System.out.println(dataSource.getDriverClassName());          
  19.     // 注意,ApplicationContext能够自动辨认和应用在其上部署的实现了BeanFactoryPostProcessor的bean。这就意味着,当使用ApplicationContext的时候应用PropertyPlaceholderConfigurer会非常的方便。由于这个原因,建议想要使用这个或者其他bean        // factory postprocessor的用户使用ApplicationContext代替BeanFactroy。         
  20.   
  21.    ApplicationContext context = new ClassPathXmlApplicationContext(" applicationContext.xml ");          
  22.    DriverManagerDataSource dataSource2 = (DriverManagerDataSource) context.getBean("dataSource");          
  23.    System.out.println(dataSource2.getDriverClassName());      
  24.   
  25.   }  
  26. }  
  评论这张
 
阅读(2547)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016