• spring mvc中的@propertysource


    在spring mvc中,在配置文件中的东西,可以在java代码中通过注解进行读取了:

    @PropertySource  在spring 3.1中开始引入

    比如有配置文件

    config.properties

    mongodb.url=1.2.3.4

    mongodb.db=hello

    则代码中

    @PropertySource("classpath:config.properties")
    public class AppConfigMongoDB {
     
    	//1.2.3.4
    	@Value("${mongodb.url}")
    	private String mongodbUrl;
     
    	//hello
    	@Value("${mongodb.db}")
    	private String defaultDb;
    
    
    @Bean
    	public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() {
    		return new PropertySourcesPlaceholderConfigurer();
    	}

    则mongodbUrl已经是读取出1.2.3.4的值了,而spring提倡用env去读取值

    @Autowired
    	private Environment env;
    
    String mongodbUrl = env.getProperty("mongodb.url");
    		String defaultDb = env.getProperty("mongodb.db");

    要注意的是,要使用

    @Bean

    public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() {

    return new PropertySourcesPlaceholderConfigurer();

    }

    才能让spring正确解析出${} 中的值

    在spring 3.2中,允许支持多个properties了,

    @Configuration
    	@PropertySource({
    		"classpath:config.properties",
    		"classpath:db.properties" //如果是相同的key,则最后一个起作用
    	})
    	public class AppConfig {
    		@Autowired
    		Environment env;
    	}

    spring 4.1中,支持@PropertySources

    @Configuration
    	@PropertySources({
    		@PropertySource("classpath:config.properties"),
    		@PropertySource("classpath:db.properties")
    	})
    	public class AppConfig {
    		//...
    	}

    在spring 4.2中,

    @Configuration
    	@PropertySource("classpath:missing.properties")
    	public class AppConfig {
    		//...
    	}

    如果发现missing.properties不存在,则抛出异常

    ,也可以使用ignoreResourceNotFound=true去忽略

    @Configuration

    @PropertySource(value="classpath:missing.properties", ignoreResourceNotFound=true)

    public class AppConfig {

    //...

    }

  • 相关阅读:
    xxx.app已损坏,打不开.你应该将它移到废纸篓-已解决
    idea 配置maven一直停留在loading archetype list
    pom.xml 识别xml文件
    idea .defaultMessage
    处理GitHub上的不允许100MB大文件上传
    Makefile 简易教程
    Android:用Intent传送图片
    Android: ListView的使用(列表控件)
    Android: SharedPreferences的简单使用(数据可持久化)
    Andriod:一个Activity向另一个Activity传递数据
  • 原文地址:https://www.cnblogs.com/panxuejun/p/6909769.html
Copyright © 2020-2023  润新知