3
respostas

[Sugestão] Váriavel de ambiente

Não sei se estou adiantando o assunto no curso mas não teria como trabalhar com arquivos .env dentro da aplicação com os dados de acesso ao banco?
Estou acompanhando o curso em uma máquina linux e a configuração de váriavel de ambiente não está funcionando.

3 respostas

Olá, Paulo! Tudo bem?

Trabalhar com arquivos .env é uma prática comum para gerenciar configurações sensíveis, como credenciais de banco de dados, em aplicações Java, especialmente quando usamos o Spring Boot. Você pode usar a biblioteca dotenv-java para carregar variáveis de ambiente de um arquivo .env.

Aqui está um exemplo de como você pode fazer isso:

  1. Adicione a dependência ao seu pom.xml (caso esteja usando Maven):

    <dependency>
        <groupId>io.github.cdimascio</groupId>
        <artifactId>java-dotenv</artifactId>
        <version>5.2.2</version>
    </dependency>
    
  2. Crie um arquivo .env na raiz do seu projeto com as variáveis de ambiente, por exemplo:

    DB_URL=jdbc:mysql://localhost:3306/meubanco
    DB_USER=usuario
    DB_PASSWORD=senha
    
  3. Carregue as variáveis de ambiente no seu código Java:

    import io.github.cdimascio.dotenv.Dotenv;
    
    public class Main {
        public static void main(String[] args) {
            Dotenv dotenv = Dotenv.load();
    
            String dbUrl = dotenv.get("DB_URL");
            String dbUser = dotenv.get("DB_USER");
            String dbPassword = dotenv.get("DB_PASSWORD");
    
            System.out.println("Database URL: " + dbUrl);
            System.out.println("Database User: " + dbUser);
            // Use essas variáveis para configurar sua conexão com o banco de dados
        }
    }
    

Se você estiver usando Spring Boot, também pode configurar essas variáveis diretamente no application.properties ou application.yml, e o Spring Boot cuidará de carregá-las automaticamente.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Armando muito obrigado pela ajuda e atenção!

Mas tenho uma dúvida com esse processo como passo as informações para o application.properties?

Oi, Paulo!

No Spring Boot você não precisa passar valores manualmente para o application.properties. O que você faz é referenciar as variáveis de ambiente diretamente usando placeholders. O Spring resolve isso automaticamente na inicialização da aplicação.

No application.properties, configure assim:


spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASSWORD}

Com isso, o Spring Data JPA lê as variáveis do sistema operacional no momento em que a aplicação sobe.

No Linux, garanta que as variáveis estejam realmente exportadas antes de subir a aplicação:


export DB_URL=jdbc:mysql://localhost:3306/meubanco
export DB_USER=usuario
export DB_PASSWORD=senha

Depois, execute a aplicação no mesmo terminal:


./mvnw spring-boot:run

Se estiver usando uma IDE, o problema aqui é que as variáveis exportadas no terminal não são herdadas automaticamente. Nesse ponto, configure as variáveis de ambiente diretamente na configuração de execução da IDE.

Esse fluxo é o padrão recomendado pelo Spring, funciona bem com JPA e evita acoplamento da aplicação a arquivos .env.

Fico à disposição!