Spring加载配置文件propertoies中util:properties和context:property-placeholder区别

前言

util:properties和context:property-placeholder标签都可以用来获取外部配置文件,加载到Spring容器,通过Spring容器来管理获取外部配置文件中的内容  

准备工作

准备jdbc.properties链接数据库配置

 database.url=jdbc:mysql://localhost/smaple  
 database.driverClassName=com.mysql.jdbc.Driver  
 database.user=root  
 database.password=123  

一、util:properties方式加载外部配置文件

1.1 全部属性

Spring加载配置文件propertoies中util:properties和context:property-placeholder区别_第1张图片

1.2 它是以声明bean方式来使用,创建了一个bean,下面使用的时候通过SpEL表达式#{}获取bean的属性。






 
    
    
    
    


1.3 需要注意,这种方式需要在spring配置文件头部声明

xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"


二、context:property-placeholder方式加载外部配置文件

2.1 概念

的作用是向Spring容器中注入一个属性占位解析器,用来处理BeanDefinition中的各种占位符,用配置文件的信息替换占位符。这是个自定义标签,Spring会使用PropertyPlaceholderBeanDefinitionParser解析它。

2.2 context:property-placeholder配置db.properties






    
    
    
    
    

如果有多个properties,可以使用通配符:

 2.3 context:property-placeholder常用属性介绍

 
 

 这个标签可以定义各种属性

  • location:属性文件路径,符合Spring的Resource定义
  • properties-ref:指定Properties对象的bean
  • file-encoding : 文件编码
  • ignore-resource-not-found:默认false,表示属性文件找不到就报错
  • ignore-unresolvable:默认false,表示属性找不到就报错
  • local-override:默认false,如果localOverride=false,配置的优先级:environment > location > property-ref,如果localOverride=true,配置的优先级:environment < location < property-ref
  • system-properties-mode:ENVIRONMENT、NEVER、FALLBACK、OVERRIDE,默认是ENVIRONMENT
  • value-separator,间隔符,默认 ':'
  • trim-values,默认false,true表示解析占位符的时候,执行trim操作去除两端的空格
  • null-value,定义一个null值判断,符合这个值的就表示应该返回null

PS:localOverride的运用,如果localOverride=false,配置的优先级:environment > location > property-ref,如果localOverride=true,配置的优先级:environment < location < property-ref

 

三、配置成bean的形式加载jdbc.properties


    
        
        
        classpath:jdbc.properties
        
    

四、Spring中配置和读取多个Properties文件

4.1 数据库配置文件demo-db.properties:

database.url=jdbc:mysql://localhost/smaple  
database.driver=com.mysql.jdbc.Driver  
database.user=root  
database.password=123  

4.2 消息服务配置文件demo-mq.properties:

#congfig of ActiveMQ  
mq.java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory  
mq.java.naming.provider.url=failover:(tcp://localhost:61616?soTimeout=30000&connectionTimeout=30000)?jms.useAsyncSend=true&timeout=30000  
mq.java.naming.security.principal=  
mq.java.naming.security.credentials=  
jms.MailNotifyQueue.consumer=5  

4.3 远程调用的配置文件demo-remote.properties:

remote.ip=localhost  
remote.port=16800  
remote.serviceName=test  

4.4 加载多个Properties配置文件

应用场景:Properties配置文件不止一个,需要在系统启动时同时加载多个Properties文件。

配置方式:

  
  
      
      
      
          
             
                
              classpath:/opt/demo/config/db.properties  
                
              file:/opt/demo/config/mq.properties
              file:/opt/demo/config/demo-remote.properties                  
              
          
      
      
      
      
          
              
                ${mq.java.naming.factory.initial}  
                ${mq.java.naming.provider.url}  
                ${mq.java.naming.security.principal}  
                ${mq.java.naming.security.credentials}  
                ${mq.java.naming.security.principal}  
                ${mq.java.naming.security.credentials}  
              
          
      

我们也可以将配置中的List抽取出来:

  
  
      
      
      
          
              
                
              classpath:/opt/demo/config/demo-db.properties  
                
              file:/opt/demo/config/demo-mq.properties  
              file:/opt/demo/config/demo-remote.properties  
              
          
      
      
      
      
          
      
      
      
      
          
              
                ${mq.java.naming.factory.initial}  
                ${mq.java.naming.provider.url}  
                ${mq.java.naming.security.principal}  
                ${mq.java.naming.security.credentials}  
                ${mq.java.naming.security.principal}  
                ${mq.java.naming.security.credentials}  
              
          
      
  

 

推荐博客:1.Spring加载Properties配置文件的四种方式

                  2. 几种加载Properties的方法

                  3. 5种方式让你读取properties不再是难题

 

你可能感兴趣的:(【31】Spring,Spring)