美文网首页Spring MVC 之 简单配置
Spring Java 注解配置之 properties文件注入

Spring Java 注解配置之 properties文件注入

作者: 巧哥儿 | 来源:发表于2018-08-31 16:22 被阅读122次

    全局配置文件注入

    由于Spring存在2个应用上下文,一个是WebApplicationContext,另一个是ServletApplicationContextInitializer。它们两者之间有的bean实例是不通用的。比如本文要使用PropertyPlaceholderConfigurer类实例。

    第一步、配置文件扫描

    将properties文件都放在classpath下,可以自定义目录。例如我就放在了resources/config目录下,主要是为了自己方便查找。


    image.png

    使用PropertiesFactoryBean扫描全部的properties文件。

    /** 加载配置文件 */
        @Bean("propertiesBean")
        public PropertiesFactoryBean propertiesFactoryBean() throws IOException {
            PropertiesFactoryBean factoryBean = new PropertiesFactoryBean();
            factoryBean.setLocations(ResourceUtil.getResources("classpath:config/*.properties"));
    
            return factoryBean;
        }
    

    其中ResourceUtil是自己根据PathMatchingResourcePatternResolver封装的一个工具类,主要是为了代码整洁。源码如下:

    public class ResourceUtil {
        public static Resource getResource(String location) {
            return resolver().getResource(location);
        }
    
        public static Resource[] getResources(String locationPattern) throws IOException {
            return resolver().getResources(locationPattern);
        }
    
        public static PathMatchingResourcePatternResolver resolver() {
            return new PathMatchingResourcePatternResolver();
        }
    }
    

    第二步、将配置注入应用上下文

    使用PropertyPlaceholderConfigurer将配置内容注入上下文,该bean必须是static方法,否则启动会异常告警。

    由于开始说了spring mvc 存在2个应用上下文,所以在使用该类进行配置注入的时候需要分别在ServletRootConfig.classServletWebConfig.class中都要写上该方法。

    /** 注入配置文件 */
        @Bean("propertyPlaceholderConfigurer")
        public static PropertyPlaceholderConfigurer propertyPlaceholderConfigurer(@Qualifier("propertiesBean") Properties properties) throws IOException {
            PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
            configurer.setProperties(properties);
    
            return configurer;
        }
    

    第三步、使用配置内容

    有了以上配置后,你就可以在 Service、Controller 等任意bean中使用@Value注解注入properties文件的配置了。

    eg:

    @Value("${value}")
    private String value;
    

    相关文章

      网友评论

        本文标题:Spring Java 注解配置之 properties文件注入

        本文链接:https://www.haomeiwen.com/subject/vjtewftx.html