【Spring之配置propertie资源文件】Maven整合spring profiles功能配置propertie资源文件更灵活、简单

spring 框架的xml文件如何读取properties文件数据

第一步:在spring配置文件中

  注意:value可以多配置几个properties文件


              
                     
                            /db.properties
                           
                     
              
       

第二步:

  在src目录下面建立db.properties文件

user=sa
password=sa
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://localhost:1433;databaseName=DB1

第三步:

  在spring的配置文件中通过EL表达式的形式调用 

 ${user}



 
       
              
                     
                            /db.properties
                           
                     
              
       
 
       
              
              
              
              
              
              
       
       
              
                     
              
              
                     
                            
                                   org.hibernate.dialect.SQLServerDialect
                            
                     
              
              
                     
                            entity/Users.hbm.xml
                     
              
       
       
              
                     
              
       
 



spring为beans标签提供了profile功能,以便项目的开发和生成环境分离。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
< beans xmlns = "http://www.springframework.org/schema/beans"
        xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:context = "http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
 
     < beans profile = "dev,test" >
         < context:property-placeholder location = "classpath:application.properties" />
 
         < bean id = "dataSource" class = "com.jolbox.bonecp.BoneCPDataSource" destroy-method = "close" >
             < property name = "driverClass" value = "${db.driver}" />
             < property name = "jdbcUrl" value = "${db.url}" />
             < property name = "username" value = "${db.username}" />
             < property name = "password" value = "${db.password}" />
             < property name = "idleConnectionTestPeriodInMinutes" value = "60" />
             < property name = "idleMaxAgeInMinutes" value = "240" />
             < property name = "maxConnectionsPerPartition" value = "30" />
             < property name = "minConnectionsPerPartition" value = "10" />
             < property name = "partitionCount" value = "3" />
             < property name = "acquireIncrement" value = "5" />
             < property name = "statementsCacheSize" value = "100" />
             < property name = "releaseHelperThreads" value = "3" />
         bean >
     < beans profile = "production" >
         < context:property-placeholder ignore-resource-not-found = "true" location = "classpath:application.properties,classpath:application-production.properties" />
         
         < bean id = "dataSource" class = "org.springframework.jndi.JndiObjectFactoryBean" >
             < property name = "jndiName" value = "${db.jndi}" />
         bean >
     beans >
 
beans >

以数据库为例,开发环境使用的是直接将配置写在项目的配置文件里面,而生产环境则使用了jndi。

切换profile可以写在web.xml里面:

?
1
2
3
4
< context-param
         < param-name >spring.profiles.active param-name
         < param-value >dev param-value
     context-param >

不过得改web.xml,现在一般项目都使用maven来管理,maven也有profile,可以将它们结合起来。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
< properties >
< profile.active >dev profile.active >
properties >< span > span > < build >
< defaultGoal >install defaultGoal >
        < resources >
            < resource >
                < directory >src/main/resources directory >
            resource >
            < resource >
                < directory >src/main/resources directory >
                < filtering >true filtering >
                < includes >
                    < include >**/*.properties include >
                includes >
            resource >
        resources >
 
build >
...
  < profiles >
        < profile >
            < id >dev id >
            < activation >
                < activeByDefault >true activeByDefault >
            activation >
        profile >
        < profile >
            < id >test id >
        profile >
        < profile >
            < id >production id >
            < properties >
                < profile.active >production profile.active >
                < profile.scope >provided profile.scope >
            properties >
        profile >
    profiles span >

mvn install -Pproduction 就是发布生产版本。

然后我们需要在项目里面src resource里面的某个配置文件添加如:

?
1
profile.active=${profile.active}

这样maven在编译时会自动设置profile。最后就是设法让spring能够读取到我们的配置。我们的做法是自己实现ContextLoaderListener,里面读取这个properties文件,将spring profiles属性设置为我们需要的值。

?
1
System.setProperty(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, activeProfile);

实际环境,也如此:


		
			dev
			
				dev
			
			
			
				true
			
			
				
					
						src/main/properties/dev-local.properties
					
				
			
		




你可能感兴趣的:(JavaWeb)