添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Environment对象,默认获取application.properties文件的内容

以下代码获得多个配置文件的内容

1、若想获取redis.properties登其他文件的内容,需要在类上面加上@PropertySource("classpath:config/redis.properties")

package com.asia.web.Controller;
import com.asia.web.Controller.utils.PropertyUtils;
import javafx.beans.property.Property;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.*;
import org.springframework.core.io.ClassPathResource;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
@RestController
@org.springframework.context.annotation.PropertySource("classpath:config/redis.properties")
public class PathSameTestController {
    @Autowired
    private   Environment env;
    @Autowired
    private PropertyUtils propertyUtils;
    @RequestMapping(value = "/doRequest")
    private String doRequest() {
        Properties properties = propertyUtils.getProperties(env);
        for (Object object : properties.keySet()) {
            System.out.println("---key=" + object.toString());

2、并需要编写一个获得工具类重写获得的方法,才能同时获得多个文件的内容,否则只能获取一个文件。

package com.asia.web.Controller.utils;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.EnumerablePropertySource;
import org.springframework.core.env.Environment;
import org.springframework.core.env.PropertySource;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
@Component
public class PropertyUtils {
     * 获取配置文件内容
     * @param env
     * @return
    public Properties getProperties(Environment env) {
        Properties properties = new Properties();
        for(PropertySource propertySource:getPropertySource(env)){
            if(propertySource instanceof EnumerablePropertySource) {
                String[] propertyNames = ((EnumerablePropertySource) propertySource).getPropertyNames();
                for (String name : propertyNames) {
                    properties.put(name, env.getProperty(name));
        return properties;
    public List<PropertySource> getPropertySource(Environment env){
        List<PropertySource> list = new ArrayList<PropertySource>();
        for (PropertySource propertySource : ((ConfigurableEnvironment) env).getPropertySources()) {
            list.add(propertySource);
        return list;
                    Environment对象,默认获取application.properties文件的内容以下代码获得多个配置文件的内容1、若想获取redis.properties登其他文件的内容,需要在类上面加上@PropertySource("classpath:config/redis.properties")package com.asia.web.Controller;import c...
从v1.x迁移到v2.x
 不建议使用default导出。 请使用命名的导出readEnv ,如下所示:
 const { readEnv } = require ( 'read-env' ) ;
// Or
import { readEnv } from 'read-env' ;
// Or in browser
window . readEnv ( 'EXAMPLE' ) ;
 parse选项已重命名为sanitize 。
 transf
前端–>前端的控制层,视图层。(专业的前端团队开发)
后端–>后端控制层、服务层、数据访问层(专业的后端团队开发)
前后端的交互是通过API来进行的,关于API的 约定该怎么处理呢?
早期:后端编写文档(协同文档),前端根据文档解析接口然后渲染视图!
问题:前后端集成,前端或者后端无法...
String[] activeProfiles = env.getActiveProfiles();//获取当前是启用哪一个个配置文件
System.out.println(Arrays.toString(activeProfiles));
String[] defaultProfiles = env.getDefaultProfiles();
System.out.println(Arrays.toStr.
				
在Spring官方代码 https://docs.spring.io/spring/docs/5.0.4.BUILD-SNAPSHOT/spring-framework-reference/core.html#beans-standard-annotations @Configuration @PropertySource("classpath:/com/myco/app.properties
Environment 是spring 自带的类,可用于读取变量的值、profile Yaml(org.yaml.snakeyaml.Yaml) 也是spring框架自带的类,用来读取yml文件 yml文件有些平时比较少用的写法 # 这是最普通的写法 def: my_value # 可以压缩,写成 abc.def: my_value # 对于特别长的,这种扁平的压缩的写法是非常清晰明了的,如果采用yml的层级写法,反而会非常乱
本文出处为:https://blog.csdn.net/blogxiaofei/article/details/8003491 本文目的完全是参考交流学习,一起学习java编程,以下是上述链接的全文内容,若有转载请标注原文的出处,即上面的链接。 Environment是一个提供访问环境变量的类。 Environment包含常量: MEDIA_BAD_REMOVAL 解释:返回get...
ConfigurableEnvironment c = (ConfigurableEnvironment) environment; MutablePropertySources m = c.getPropertySources(); Properties p = new Properties(); p.put("spring.test.redis.host", "192.168.1.100")...
Environment 是 odoo 中操作db的总句柄,以下几种方式可以获得: 在 8、9、10版本中中,对于继承了Model的类来说可以直接通过self.env得到 Environment 在请求的 Controller 可以通过 request.env()得到 Environment 通过模型类或模型类对象获取,cls.env、product.env eg 一些常用上下文参数:
java 获取环境变量In Java, how to get the value (string) of an environment variable? 在Java中 ,如何获取环境变量的值( 字符串 )? You may call the System.getenv(name) library function in Java to get the environment variable ...
在Spring Boot中,可以通过多种方式配置多个不同的环境,比如properties文件、yaml文件、系统环境变量等。在多环境配置中,一个常见的需求是根据不同的环境来加载不同的配置文件,Spring Boot提供了一种很方便的方式来实现这个需求,即使用Spring Boot的Profile功能。 通过使用Profile,我们可以在不同的环境中加载不同的配置文件。具体实现方式如下: 1. 在application.properties文件中配置profiles.active属性,如:`spring.profiles.active=dev`。 2. 在resources目录下创建不同的配置文件,如application-dev.properties、application-prod.properties等。 3. 在配置文件中定义对应的配置项,如数据库连接、缓存配置等。 在程序运行时,Spring Boot会根据配置的profiles.active属性来决定加载哪个配置文件中的配置项。比如,当profiles.active=dev时,Spring Boot会加载application-dev.properties文件中的配置项。 而在实际项目中,我们可能需要根据不同的环境来动态解析配置文件,并将其配置到Spring Boot的Environment中,这时候可以使用Spring Boot提供的PropertySource来实现。具体实现方式如下: 1. 创建一个PropertiesLoaderUtils类,用于加载properties文件。 ```java public class PropertiesLoaderUtils { private static final String DEFAULT_PROPERTIES = "application.properties"; public static Properties loadProperties(String... locations) throws IOException { Properties properties = new Properties(); for (String location : locations) { try (InputStream in = getResourceAsStream(location)) { if (in == null) { continue; properties.load(in); return properties; private static InputStream getResourceAsStream(String location) { InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(location); if (in == null) { in = PropertiesLoaderUtils.class.getClassLoader().getResourceAsStream(location); if (in == null) { in = ClassLoader.getSystemClassLoader().getResourceAsStream(location); return in; public static Properties loadDefaultProperties() throws IOException { return loadProperties(DEFAULT_PROPERTIES); 2. 在程序启动时,读取配置文件并解析成PropertySource,然后将其添加到Spring Boot的Environment中。 ```java @SpringBootApplication public class Application { public static void main(String[] args) throws IOException { SpringApplication app = new SpringApplication(Application.class); Environment env = app.run(args).getEnvironment(); Properties properties = loadProperties(env.getActiveProfiles()); PropertySource<?> propertySource = new PropertiesPropertySource("customProperties", properties); ((ConfigurableEnvironment) env).getPropertySources().addFirst(propertySource); private static Properties loadProperties(String[] activeProfiles) throws IOException { String[] locations = new String[activeProfiles.length + 1]; System.arraycopy(activeProfiles, 0, locations, 0, activeProfiles.length); locations[activeProfiles.length] = "application.properties"; // 默认配置文件 return PropertiesLoaderUtils.loadProperties(locations); 在上面的代码中,我们首先获取了Spring Boot的Environment对象,并根据当前的Active Profiles加载对应的配置文件。然后,将配置文件解析成PropertySource,并将其添加到Environment中,这样就可以在程序中通过Environment获取到配置项了。 需要注意的是,如果多个配置文件中存在同名的配置项,后加载的配置项会覆盖之前的配置项。因此,在编写配置文件时,应该避免定义同名的配置项,以免造成不必要的麻烦。