zoukankan      html  css  js  c++  java
  • Spring加载Properties配置文件常用的几种方式

    代码已上传至github,感兴趣的可以一起学习交流~

    一 通过<context:property-placeholder>标签

    <?xml version="1.0" encoding="UTF-8"?>
    
    <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.0.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    
        <!-- 配置扫包路径 -->
        <context:component-scan base-package="com.liyefei.spring.demo" />
        
        <!-- 开启注解 -->
        <context:annotation-config />
    
        <!-- 加载配置文件 -->
        <context:property-placeholder ignore-unresolvable="true" location="param1.properties" />
    
    </beans>

    如何使用?

    • xml中使用
      <property name="url" value="${jdbc.url}" />
    • java中使用
      @Component
      @Data
      public class InitParam {
      
          @Value("${offline}")
          private boolean offline;
      
          @Value("${domain}")
          private String domain;
      
      }

    如何取值?

    public class App {
    
        public static void main(String[] args) {
            ApplicationContext context = new ClassPathXmlApplicationContext("Application.xml");
    
            //方式1:通过<context:property-placeholder>标签
            InitParam1 initParam = (InitParam1) context.getBean("initParam1");
            System.out.println("method1:" + initParam);
    }

    二 通过@PropertySource注解实现配置文件加载

    @PropertySources({@PropertySource(value = "param2.properties")})
    public class AppConfig {
    
        @Bean
        public InitParam2 initParam2(){
            return new InitParam2();
        }
    }
    @Data
    public class InitParam2 {

    @Value("${param2.offline}")
    private String offline;

    @Value("${param2.domain}")
    private String domain;

    }

    如何取值?

    //方式2:通过@PropertySource注解实现配置文件加载
    AnnotationConfigApplicationContext annoContext = new AnnotationConfigApplicationContext(AppConfig.class);
    //方式2.1 通过getBean方法获取参数
    InitParam2 initParam2 = annoContext.getBean(InitParam2.class);
    System.out.println("method2:" + initParam2);
           
    或者

      //方式2.2 通过getEnvironment获取参数
      ConfigurableEnvironment environment = annoContext.getEnvironment();
      String offline = environment.getProperty("param2.offline");
      String domain = environment.getProperty("param2.domain");
      System.out.println("domain:" + domain + ",offline:" + offline);

    三 通过PropertyPlaceholderConfigurer类读取配置文件

        <!-- 方式3:通过PropertyPlaceholderConfigurer类加载 -->
        <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="locations">
                <list>
                    <value>classpath:param3.properties</value>
                    <!--
                        web项目可以按下面的方式加载
                        <value>/WEB-INF/mail.properties</value>
                    -->
                </list>
            </property>
        </bean>

    取值方式同方法1。

    代码已上传至github,感兴趣的可以一起学习交流~

    “小智”和“佩奇”是同班同学,佩奇同学非常乐于思考,经常提问题,小智同学,聪明绝顶,乐于解答问题。
  • 相关阅读:
    Eclipse设置、调优、使用
    eclipse安装插件的方式 三种:links、eclipse中使用插件安装向导安装、直接copy插件到对应的eclipse目录 MyEclipse10安装SVN插件
    eclipse 在Servers窗口创建一个Tomcat 6.0 Server失败
    小技巧:帮你批量删除代码前的行号
    editplus发布3.01 Build 446 Final版(附下载及中文版)
    eclipse 垃圾回收器,内存释放
    eclipse.ini的相关说明
    Eclipse 去掉JavaScript Validator
    DropBox 超实用的免费文件网络同步、备份、分享工具
    使用EditPlus技巧,提高工作效率(附英文版、自动完成文件、语法文件下载)
  • 原文地址:https://www.cnblogs.com/liyefei/p/13073738.html
Copyright © 2011-2022 走看看