`

spring 读取properties文件

阅读更多

spring 读取properties文件

spring 版本:4.3.2.RELEASE

注解方式

使用PropertySource

package com.stub.conf;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
/**
 * Created by 黄威 on 9/18/16.<br >
 */
@Configuration
@PropertySource({"classpath:/com/app.properties","classpath:/${appPath}/app2.properties"})
//@PropertySources({
//        @PropertySource("classpath:/com/app.properties"),
//        @PropertySource("classpath:/${appPath}/app2.properties")
//})
public class EnvMyBean {
    @Autowired
    Environment env;

    public String getProperty(String key){
        return env.getProperty(key);
    }
}

 说明:

变量${appPath}是从第一个配置文件(classpath:/com/app.properties)中读取的.

注意:低版本(例如3.2.3.RELEASE)的spring 是无法读取${appPath}

如何使用呢?

在控制器中注入EnvMyBean即可.

 

 

profile

适用场景:

(a)测试环境,使用@ActiveProfiles 指定profile

@ActiveProfiles(profiles = "dev")
public class DevConfigTest {
//code here
}

 

(b)不同的环境使用不同的配置

通过配置web.xml:

<context-param>
  <param-name>spring.profiles.active</param-name>
  <param-value>DOUBLEUPMINT</param-value>
</context-param>

 

(c)通过程序指定

AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.getEnvironment().setActiveProfiles("dev");
ctx.register(SomeConfig.class, StandaloneDataConfig.class, JndiDataConfig.class);
ctx.refresh();

 也可以重载全局监听器:

import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import javax.servlet.ServletContextEvent;

/**
 * Created by 黄威 on 9/18/16.<br >
 */
public class ApplicationListener extends ContextLoaderListener {
    public ApplicationListener(WebApplicationContext context) {
        super(context);
        ConfigurableEnvironment environment = (ConfigurableEnvironment) context.getEnvironment();
        System.out.println("ApplicationListener contructor");
        System.out.println(environment);
    }

    public ApplicationListener() {
        super();
    }

    @Override
    public void contextInitialized(ServletContextEvent event) {
        super.contextInitialized(event);
        WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(event.getServletContext());
        ConfigurableEnvironment environment = (ConfigurableEnvironment) ctx.getEnvironment();
        System.out.println(environment);
        environment.setActiveProfiles("production");
    }
}

 

使用PropertyPlaceholderConfigurer 需要在xml配置

<bean id="PropertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:properties/app.properties</value>
			</list>
		</property>
	</bean>

  

 

参考:http://javabeat.net/profile-annotation-spring-4/

 

  • 大小: 315.7 KB
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics