您的位置:首页 > 编程语言 > Java开发

SpringMVC加载配置Properties文件的几种方式

2017-05-18 15:08 381 查看
转载请说明出处:http://blog.csdn.net/chinadim/article/details/40621671

最近开发的项目使用了SpringMVC的框架,用下来感觉SpringMVC的代码实现的非常优雅,功能也非常强大,
网上介绍Controller参数绑定、URL映射的文章都很多了,写这篇博客主要总结一下SpringMVC加载配置Properties文件的几种方式

1.通过context:property-placeholde实现配置文件加载
  1.1、在spring.xml中加入context相关引用

[html] view
plain copy

<?xml version="1.0" encoding="UTF-8"?>  

<beans xmlns="http://www.springframework.org/schema/beans"  

 xmlns:context="http://www.springframework.org/schema/context"  

 xsi:schemaLocation="http://www.springframework.org/schema/beans  

      http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  

      http://www.springframework.org/schema/context  

      http://www.springframework.org/schema/context/spring-context.xsd">  

 1.2、引入jdbc配置文件         

[html] view
plain copy

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

1.3、jdbc.properties的配置如下
   

[html] view
plain copy

jdbc_driverClassName=com.mysql.jdbc.Driver  

jdbc_url=jdbc:mysql://localhost/testdb?useUnicode=true&characterEncoding=utf8  

jdbc_username=root  

jdbc_password=123456  

1.4、在spring-mybatis.xml中引用jdbc中的配置

[html] view
plain copy

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init"  

   destroy-method="close" >  

   <property name="driverClassName">  

     <value>${jdbc_driverClassName}</value>  

   </property>  

   <property name="url">  

     <value>${jdbc_url}</value>  

   </property>  

   <property name="username">  

     <value>${jdbc_username}</value>  

   </property>  

   <property name="password">  

     <value>${jdbc_password}</value>  

   </property>  

   <!-- 连接池最大使用连接数 -->  

   <property name="maxActive">  

     <value>20</value>  

   </property>  

   <!-- 初始化连接大小 -->  

   <property name="initialSize">  

     <value>1</value>  

   </property>  

   <!-- 获取连接最大等待时间 -->  

   <property name="maxWait">  

     <value>60000</value>  

   </property>  

   <!-- 连接池最大空闲 -->  

   <property name="maxIdle">  

     <value>20</value>  

   </property>  

   <!-- 连接池最小空闲 -->  

   <property name="minIdle">  

     <value>3</value>  

   </property>  

   <!-- 自动清除无用连接 -->  

   <property name="removeAbandoned">  

     <value>true</value>  

   </property>  

   <!-- 清除无用连接的等待时间 -->  

   <property name="removeAbandonedTimeout">  

     <value>180</value>  

   </property>  

   <!-- 连接属性 -->  

   <property name="connectionProperties">  

     <value>clientEncoding=UTF-8</value>  

   </property>  

 </bean>  

1.5、在java类中引用jdbc.properties中的配置

[html] view
plain copy

import org.springframework.beans.factory.annotation.Value;  

import org.springframework.context.annotation.Configuration;  

  

  

   

@Configuration   

public class JdbcConfig{      

      

    @Value("${jdbc_url}")  

    public  String jdbcUrl; //这里变量不能定义成static  

      

    @Value("${jdbc_username}")  

    public  String username;    

      

    @Value("${jdbc_password}")  

    public  String password;    

       

}  

1.6、在controller中调用
   

[html] view
plain copy

@RequestMapping("/service/**")  

@Controller  

public class JdbcController{  

   

         @Autowired  

     private JdbcConfig Config; //引用统一的参数配置类  

  

         @Value("${jdbc_url}")  

         private String jdbcUrl; //直接在Controller引用  

         @RequestMapping(value={"/test"})   

        public ModelMap test(ModelMap modelMap) {   

               modelMap.put("jdbcUrl", Config.jdbcUrl);  

               return modelMap;   

          }  

         @RequestMapping(value={"/test2"})  

     public ModelMap test2(ModelMap modelMap) {   

           modelMap.put("jdbcUrl", this.jdbcUrl);  

           return modelMap;  

     }   

}  

1.7、测试

在ie中输入http://localhost:8080/testWeb/service/test 或http://localhost:8080/testWeb/service/test2
 

返回如下结果:

[java] view
plain copy

{   

    jdbcUrl:"jdbc:mysql://localhost/testdb?useUnicode=true&characterEncoding=utf8"  

}  



 

注:通过context:property-placeholde加载多个配置文件

 只需在第1.2步中将多个配置文件以逗号分隔即可 

[html] view
plain copy

<context:property-placeholder location="classpath:jdbc.properties,classpath:XXX.properties"/>  


 
2、通过util:properties实现配置文件加载

 2.1、在spring.xml中加入util相关引用

[html] view
plain copy

<?xml version="1.0" encoding="UTF-8"?>  

<beans xmlns="http://www.springframework.org/schema/beans"  

 xmlns:context="http://www.springframework.org/schema/context"  

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

 xmlns:util="http://www.springframework.org/schema/util"  

 xsi:schemaLocation="http://www.springframework.org/schema/beans  

      http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  

      http://www.springframework.org/schema/context  

      http://www.springframework.org/schema/context/spring-context.xsd  

      http://www.springframework.org/schema/util  

      http://www.springframework.org/schema/util/spring-util-4.0.xsd">  

2.2、 引入config配置文件  

[html] view
plain copy

<util:properties id="settings" location="classpath:config.properties"/>  

2.3、config.properties的配置如下 

[html] view
plain copy

gnss.server.url=http://127.0.0.1:8080/gnss/services/data-world/rest  

2.4、在java类中引用config中的配置   

[html] view
plain copy

import org.springframework.beans.factory.annotation.Value;  

import org.springframework.stereotype.Component;  

  

@Component  

public class Config {   

      @Value("#{settings['gnss.server.url']}")    

      public  String GNSS_SERVER_URL;   

   

}  

2.5、在controller中调用

[html] view
plain copy

@RequestMapping("/service2/**")  

@Controller  

public class ConfigController{  

   

         @Autowired  

     private Config Config; //引用统一的参数配置类  

  

         @RequestMapping(value={"/test"})  

     public ModelMap test(ModelMap modelMap) {   

        modelMap.put("gnss.service.url",Config.GNSS_SERVER_URL);  

            return modelMap;  

      }   

}  

2.6、测试
在ie中输入http://localhost:8080/testWeb/service2/test

返回如下结果:

[html] view
plain copy

{  

   "gnss.service.url":"http://127.0.0.1:8080/gnss/services/data-world/rest"  

}  

3.直接在Java类中通过注解实现配置文件加载
3.1、在java类中引入配置文件

[java] view
plain copy

import org.springframework.beans.factory.annotation.Value;  

import org.springframework.context.annotation.Configuration;  

import org.springframework.context.annotation.PropertySource;  

  

@Configuration  

@PropertySource(value="classpath:config.properties")    

public class Config {   

   

@Value("${gnss.server.url}")   

public  String GNSS_SERVER_URL;  

  

@Value("${gnss.server.url}")   

public  String jdbcUrl;   

  

}  

3.2、在controller中调用

[java] view
plain copy

@RequestMapping("/service2/**")  

@Controller  

public class ConfigController{  

   

         @Autowired  

     private Config Config; //引用统一的参数配置类  

  

          @RequestMapping(value={"/test"})  

     public ModelMap test(ModelMap modelMap) {   

        modelMap.put("gnss.service.url", Config.GNSS_SERVER_URL);  

            return modelMap;  

     }   

}


3.3、测试
在ie中输入http://localhost:8080/testWeb/service2/test

返回如下结果:

[java] view
plain copy

{  

   "gnss.service.url":"http://127.0.0.1:8080/gnss/services/data-world/rest"  

 }  



最后附上spring.xml的完整配置:

[html] view
plain copy

<?xml version="1.0" encoding="UTF-8"?>  

<beans xmlns="http://www.springframework.org/schema/beans"  

 xmlns:context="http://www.springframework.org/schema/context"  

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

 xmlns:util="http://www.springframework.org/schema/util"  

 xsi:schemaLocation="http://www.springframework.org/schema/beans  

      http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  

      http://www.springframework.org/schema/context  

      http://www.springframework.org/schema/context/spring-context.xsd  

      http://www.springframework.org/schema/util  

      http://www.springframework.org/schema/util/spring-util-4.0.xsd">  

  

    <!-- 引入jdbc配置文件 -->  

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

  

     <!-- 引入多配置文件 -->  

       <context:property-placeholder location="classpath:jdbc.properties,classpath:XXX.properties"/>  

     <!-- 通过util引入config配置文件 -->  

     <!-- <util:properties id="settings" location="classpath:config.properties" /> -->  

     <!-- 扫描文件(自动将servicec层注入) -->   

     <context:component-scan base-package="修改成你的Config类所在的package"/></beans>  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring mvc 框架