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/
相关推荐
### Spring读取Properties文件的核心知识点 #### 1. **引入PropertyPlaceholderConfigurer** 在Spring的配置文件中,首先需要定义一个`PropertyPlaceholderConfigurer` bean,这是Spring用来解析Properties文件并...
Spring框架提供了强大的属性配置管理,能够帮助开发者轻松地读取和使用properties文件中的key-value对。本教程将深入探讨如何在Spring中以不同的方式读取properties文件,以便更好地理解和应用这些配置。 首先,...
1. **properties文件结构** `properties`文件的结构非常简单,每行代表一个键值对,键和值之间用等号`=`或冒号`:`分隔。例如: ``` username=admin password=123456 database.url=jdbc:mysql://localhost:3306/...
Spring读取Properties文件实例解析 Spring框架中,读取Properties文件是一个非常重要的步骤,Properties文件中存储着应用程序的配置信息,如数据库连接信息、Server配置信息等。在Spring应用程序中,我们可以使用@...
Spring 无法读取 properties 文件数据问题详解 Spring 框架在读取 properties 文件数据时可能会遇到一些问题,本文将对这些问题进行详细的解释和解决。 问题一:Controller 中无法读取 properties 文件数据 在 ...
在Spring框架中,读取properties文件主要通过两种方式:`PropertyPlaceholderConfigurer` 和 `@Value` 注解。 1. **PropertyPlaceholderConfigurer**: 这是一个Spring的bean定义类,它允许我们从properties文件中...
本篇文章将深入探讨如何在Spring中读取不同目录下的配置文件,以及使用`ClassPathXmlApplicationContext`和`FileSystemXmlApplicationContext`这两种不同的上下文环境来加载它们。 首先,让我们了解`...
标题 "sftp直接以url模式读取-----------包括servlet如何借用springproperties取文件" 提到的是在Java开发中,如何通过SFTP(Secure File Transfer Protocol)协议以URL模式读取远程文件,并结合SpringProperties来...
在上面的配置中,`${db.driver}`、`${db.url}`、`${db.username}`和`${db.password}`都是从Properties文件中读取的属性值。Spring会自动替换这些占位符,使得我们的数据源bean能够正确连接到数据库。 除了上述方法...
本篇将深入探讨如何使用Java来实现Properties文件的读取。 首先,我们需要了解Properties类在Java中的作用。`java.util.Properties`是Java提供的一个类,它继承了`Hashtable`,主要用于处理属性列表(键/值对)。...
本文将详细介绍如何在Java中读取`properties`配置文件。 首先,我们需要了解`properties`文件的格式。一个标准的`.properties`文件通常包含多个行,每行由一个键和一个值组成,它们之间用等号(`=`)或冒号(`:`)...
此外,对于大型项目,可能需要更高级的解决方案,例如使用Spring框架的`@Value`注解或`@ConfigurationProperties`,这样可以在运行时自动注入配置信息,减少手动读取文件的步骤。 在开发过程中,有一些工具可以帮助...
在Spring框架中,读取`properties`配置文件是常见的任务,用于管理应用程序的配置信息,如数据库连接字符串、服务端口、系统环境变量等。本文将深入探讨如何在Spring项目中实现这一功能。 首先,我们需要一个`...
// 加载properties文件 props.load(input); } catch (IOException ex) { ex.printStackTrace(); } finally { if (input != null) { try { input.close(); } catch (IOException e) { e.printStackTrace(); ...
当我们的应用程序被打包成JAR文件后,有时我们需要从JAR内部读取配置文件,例如application.properties或application.yml。本文将深入探讨如何在Spring框架中实现这一功能。 首先,理解Spring的资源配置。Spring...
在Java编程中,读取`.properties`文件是常见的任务,这些文件通常用于存储配置信息,如数据库连接参数。本文将详细介绍如何使用Java读取`.properties`文件并利用这些信息连接到数据库。 首先,我们需要理解`....
- 如Apache Commons Configuration或Spring框架都提供了更高级的Properties文件处理功能,支持更复杂的配置结构和动态更新。 总结来说,Java中的Properties文件是配置管理的关键组件。通过`java.util.Properties`...
本文将深入探讨如何在Java中解决Properties文件保存和读取中文乱码的挑战。 首先,我们需要理解Java默认使用ISO-8859-1编码来处理Properties文件。由于此编码不支持大部分中文字符,因此在保存或加载包含中文的...
在Spring Boot应用中,多模块配置文件的读取是一个重要的实践,它有助于提高代码的可维护性和模块化。本文将详细探讨如何在Spring Boot的多模块项目中管理和使用不同的配置文件,以实现低耦合的设计。 首先,了解...
这里,`@Value`注解直接在字段上,从properties文件中读取指定的属性值。 2. 使用`@ConfigurationProperties`注解: ```java @Configuration @ConfigurationProperties(prefix = "ds1.jdbc") public class ...