PROJETO: Gerenciador de Configurações para Sistema
Desenvolvedor: Henrique
Data: 15/04/2026
DESCRIÇÃO:
Este sistema de configuração tem como objetivo facilitar o gerenciamento de parâmetros de uma aplicação Java, como host, porta, usuário, senha e banco de dados, sem a necessidade de editar diretamente o código ou depender de arquivos externos complexos. Ele funciona carregando uma string interna da própria classe (ConfigSource), onde as configurações são definidas no formato chave: valor. Essas informações são convertidas em um mapa interno (Map), permitindo acesso rápido e organizado.
🔧 Funcionalidades principais:
- Leitura de configurações por chave (get("host"))
- Atualização de valores em tempo de execução (set("port", "8080"))
- Persistência em arquivo JSON real
- Carregamento de configurações a partir de JSON
- Suporte a ambientes diferentes (DEV e PROD)
- Estrutura simples e independente de frameworks externos complexos
🚀 Como utilizar:
Defina as configurações dentro da classe ConfigSource (DEV ou PROD).
Instancie o ConfigManager, informando o ambiente desejado:
ConfigManager config = new ConfigManager("dev");
Acesse valores com:
config.get("host");
Altere valores em tempo de execução:
config.set("port", "8080");
Salve as configurações em um arquivo JSON:
config.saveJson("config.json");
Recarregue o arquivo quando necessário:
config.loadJson("config.json");
FERRAMENTAS:
☕ Java
📦 Gson (Google)
Biblioteca responsável pela serialização e desserialização de JSON. Ela converte automaticamente o Map
📁 FileWriter / FileReader (Java IO)
Classes nativas do Java usadas para leitura e escrita de arquivos no sistema operacional, permitindo salvar e carregar o arquivo config.json.
🧠 Estrutura Map (HashMap)
Utilizada para armazenar as configurações em memória, permitindo acesso rápido por chave e modificação dinâmica dos valores.
CÓDIGO FONTE:
Classe: Main
// Classe de teste
public class Main {
public static void main(String[] args) {
// DEV ou PROD
ConfigManager config = new ConfigManager("dev");
// GET por chave
System.out.println(config.get("host"));
// SET valor
config.set("port", "8080");
// salvar JSON
config.saveJson("config.json");
// carregar JSON depois
config.loadJson("config.json");
config.printAll();
}
}
Classe: ConfigManager
// Classe principal
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
public class ConfigManager {
private Map config = new HashMap<>();
private Gson gson = new GsonBuilder().setPrettyPrinting().create();
public ConfigManager(String env) {
loadFromSource(env);
}
// Carrega config da "string da classe"
private void loadFromSource(String env) {
String source = env.equalsIgnoreCase("prod")
? ConfigSource.PROD
: ConfigSource.DEV;
String[] lines = source.split("\n");
for (String line : lines) {
String[] parts = line.split(": ");
if (parts.length == 2) {
config.put(parts[0], parts[1]);
}
}
}
// =========================
// GET por chave
// =========================
public String get(String key) {
return config.get(key);
}
// =========================
// SET valor
// =========================
public void set(String key, String value) {
config.put(key, value);
}
// =========================
// Salvar JSON
// =========================
public void saveJson(String path) {
try (FileWriter writer = new FileWriter(path)) {
gson.toJson(config, writer);
} catch (IOException e) {
e.printStackTrace();
}
}
// =========================
// Carregar JSON
// =========================
public void loadJson(String path) {
try (FileReader reader = new FileReader(path)) {
Map, ?> map = gson.fromJson(reader, Map.class);
config.clear();
for (Map.Entry, ?> entry : map.entrySet()) {
config.put(entry.getKey().toString(),entry.getValue().toString());
}
} catch (IOException e) {
e.printStackTrace();
}
}
// debug
public void printAll() {
System.out.println(config);
}
}
Classe: ConfigSource
// Permite configurações personalizadas para mais de um usuário
public class ConfigSource {
public static final String DEV =
"env: dev\n" +
"host: localhost\n" +
"port: 3306\n" +
"user: root\n" +
"password: 1234\n" +
"database: sistema_dev";
public static final String PROD =
"env: prod\n" +
"host: 192.168.0.10\n" +
"port: 3306\n" +
"user: admin\n" +
"password: secret\n" +
"database: sistema_prod";
}