当前位置: 首页 > 知识库问答 >
问题:

使用环境变量的Spring Boot配置

颛孙建业
2023-03-14

我有一个Spring Boot应用程序,它与DB交互,使用spring data REST提供资源。我想从环境变量中获得配置。下面是我的属性文件。

spring.datasource.url=${mysql.url}
spring.datasource.username=${mysql.user}
spring.datasource.password=${mysql.password}

我的环境变量在图像https://ibb.co/cyxsnc中

我甚至还尝试了下面的配置

spring.datasource.url=${MySQL_Url}
spring.datasource.username=${MySQL_User}
spring.datasource.password=${MySQL_Password}
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Tomcat.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.tomcat.jdbc.pool.DataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalArgumentException: URL must start with 'jdbc'
Project
|-- src/main/java
    |-- com.example.app
        |-- DemoApplication.java
|-- src/main/resources
    |-- application.properties

注意:如果设置如下所示的值,配置工作正常

spring.datasource.url=jdbc:mysql://localhost:3306/ex_man
spring.datasource.username=root
spring.datasource.password=root

我错过了什么?

共有1个答案

桂玉石
2023-03-14

请查看以下文档:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

尝试命名您的环境变量:

spring_datasource_url

spring_datasource_username

spring_datasource_password

更新:

package com.example.environment_vars;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class EnvironmentVarsApplication {

    @Value("${env.var}")
    private String envVar;

    @Bean
    public CommandLineRunner commandLineRunner() {
        return new CommandLineRunner() {
            @Override
            public void run(String[] arg0) throws Exception {
                System.out.println(envVar);
            }
        };
    }

    public static void main(String[] args) {
        SpringApplication.run(EnvironmentVarsApplication.class, args);
    }
}
 类似资料:
  • 本文向大家介绍SpringBoot+docker环境变量配置详解,包括了SpringBoot+docker环境变量配置详解的使用技巧和注意事项,需要的朋友参考一下 项目中遇到springBoot+docker需要配置不同环境变量的问题,做个简单的总结: 1.开发环境ide中启动项目 可以通过ide的环境变量参数配置,启动之后使用哪个配置,比如 这样就使用application-test.yml中的

  • 在SpringBoot中读取环境变量的最佳方法是什么? 在Java中,我使用了以下方法: 是否可以使用注释来实现?

  • 如果不配置环境变量,每次登录 MySQL 服务器时就必须进入到 MySQL 的 bin 目录下,也就是输入“cd C:\Program Files\MySQL\MySQL Server 5.7\bin”命令后,才能使用 MySQL 等其它命令工具,这样比较麻烦。配置环境变量以后就可以在任意位置执行 MySQL 命令了,本节主要介绍怎样手动配置环境变量。 MySQL 如果不配置环境变量就只能在 my

  • 类型: Object Nuxt.js 让你可以配置在客户端和服务端共享的环境变量。 例如 (nuxt.config.js): module.exports = { env: { baseUrl: process.env.BASE_URL || 'http://localhost:3000' } } 以上配置我们创建了一个 baseUrl 环境变量,如果应用设定了 BASE_URL

  • 本文向大家介绍详解 MAC/Linux Vi配置环境变量及Java环境变量配置,包括了详解 MAC/Linux Vi配置环境变量及Java环境变量配置的使用技巧和注意事项,需要的朋友参考一下 详解 MAC/Linux Vi配置环境变量及Java环境变量配置 vi基础 1、vi的基本概念   (1)基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mod

  • 问题内容: 我有以下情形:我定义了一个env变量,并想在nginx块中使用它。参考nginx文档,我在文件中使用伪指令,如下所示: 现在我想将变量用于。我尝试如下所示: 但我最终收到以下错误消息: 问题答案: 正确的用法是,但是从nginx.conf设置的环境变量不能在服务器,位置或http块中使用。 如果使用openresty包(包括Lua),则可以使用环境变量。