4
respostas

Como faço para utilizar estas variaveis em um arquivo .env?

Consegui carregar as variaveis de ambiente das APIS utilizando a seguinte classe:

package br.com.alura.screenmatch.service;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class GetApiKey {
    public static String getKey(String key) {
        Properties properties = new Properties();
        try {
            FileInputStream fileInputStream = new FileInputStream(".env");
            properties.load(fileInputStream);
            fileInputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        String propertie = properties.getProperty(key);

        return propertie;
    }
    
}

Porém gostaria de saber como carregar essas variaveis de usuario e senha que dão acesso ao banco de dados da mesma forma (em um arquivo .env)

4 respostas

Opa Felipe! Tudo bem?

Essa forma que você fez é uma alternativa, mas para projetos distribuídos e desenvolvidos em equipe seria mais interessante uma abordagem que não seja limita ao seu dispositivo.

Com isso, indico que assista o seguinte vídeo, nele é feito um passo a passo de como guardar os dados sensíveis presente no seu arquivo .properties:

Caso tenha alguma dúvida acerca dos passos realizados no vídeo, estarei à disposição para ajudá-lo.

Bons estudos!

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

Muito obrigado pela dica! Facilitou bastante.

Achei em outro forum um bizu pra carregar no arquivo .env da seguinte forma:

spring.application.name=app
spring.config.import=optional:file:.env[.properties]

spring.datasource.url=jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}
spring.datasource.username=${MYSQL_USERNAME}
spring.datasource.password=${MYSQL_PASSWORD}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

spring.jpa.show-sql=true
spring.jpa.format-sql=true
spring.jpa.hibernate.ddl-auto=update

A forma acima resolveu tbm.

Existe algum problema em carregar desta forma? Lembrando que no .gitignore eu adicionei o arquivo .env para nao ir pro github.

Bom dia, Filipe! Tudo bem? Peço desculpas pela demora.

Como o .env não irá para o seu repositório remoto no GitHub, você deve subir outro arquivo, o .env.example que terá informações de exemplo para cada campo dos itens que você tem no .env. Ou basicamente os campos vazios, segue um exemplo:

DB_HOST=
DB_PORT=
DB_USER= 
DB_PASSWORD= 
DB_NAME=

SECRET_KEY=
ALGORITHM= 

E ao fazer o clone desse projeto em outro momento ou dispositivo, você deve fazer uma cópia do arquivo .env.example e alterar o seu nome para .env e adicionar as informações nele.

Bons estudos!