Proprietà dell'applicazione e profili
Esternalizzi la configurazione con application.properties/yml, definisca i profili e inietti i valori con @Value e @ConfigurationProperties.
Proprietà dell'applicazione e profili è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Java Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Java Academy include 4 lezioni in totale.
application.properties vs application.yml
Spring Boot legge la configurazione da src/main/resources/application.properties o application.yml. YAML supporta una configurazione gerarchica senza ripetere le chiavi; entrambi offrono le stesse funzionalità.
# application.properties:
server.port=8080
spring.datasource.url=jdbc:postgresql://localhost/mydb
spring.jpa.hibernate.ddl-auto=validate
# Equivalent application.yml:
server:
port: 8080
spring:
datasource:
url: jdbc:postgresql://localhost/mydb
jpa:
hibernate:
ddl-auto: validateIniettare valori con @Value
Usi @Value("${property.key}") per iniettare una singola proprietà. Aggiunga un valore predefinito con ${key:default}. Sono supportate le espressioni SpEL.
@Service
public class PricingService {
@Value("${pricing.vat-rate:0.20}")
private double vatRate;
@Value("${app.name}")
private String appName;
}@ConfigurationProperties per il binding type-safe
Associare un gruppo di proprietà correlate a un record o a una classe Java annotati con @ConfigurationProperties. Sono supportate le annotazioni di validazione.
@ConfigurationProperties(prefix = "app.mail")
public record MailProperties(
@NotBlank String host,
@Min(1) @Max(65535) int port,
boolean ssl
) {}
// Bind in Spring Boot 3: @EnableConfigurationProperties(MailProperties.class)Profili: definire gli ambienti
I profili consentono di avere configurazioni specifiche per ogni ambiente. Definisca bean o proprietà attivi solo quando è attivo un determinato profilo.
# application-dev.properties (active when profile=dev):
spring.datasource.url=jdbc:h2:mem:testdb
logging.level.com.example=DEBUG
# application-prod.properties (active when profile=prod):
spring.datasource.url=jdbc:postgresql://prod-db/app
logging.level.com.example=WARNAttivare i profili
Attivi un profilo tramite application.properties, una variabile d'ambiente, una proprietà di sistema o SPRING_PROFILES_ACTIVE di Spring Boot.
# application.properties:
spring.profiles.active=dev
# Or environment variable:
export SPRING_PROFILES_ACTIVE=prod
# Or JVM argument:
java -Dspring.profiles.active=prod -jar app.jar@Profile sui bean
Annoti un @Bean o un @Component con @Profile("prod") per registrarlo solo quando è attivo il profilo corrispondente.
@Configuration
public class DataSourceConfig {
@Bean @Profile("dev")
public DataSource h2DataSource() { return new EmbeddedDatabaseBuilder().build(); }
@Bean @Profile("prod")
public DataSource postgresDataSource() { return DataSourceBuilder.create().url(prodUrl).build(); }
}Gruppi di profili (Spring Boot 2.4+)
Raggruppi più profili sotto un unico nome. L'attivazione del gruppo attiva contemporaneamente tutti i profili elencati.
# application.properties:
spring.profiles.group.production=prod,metrics,cloudConfigurazione esternalizzata con variabili d'ambiente
Spring Boot associa automaticamente le variabili d'ambiente alle proprietà. DB_HOST corrisponde a db.host (binding flessibile). È ideale per le distribuzioni Docker e Kubernetes.
# application.properties:
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASS}Priorità di sovrascrittura delle proprietà
Le proprietà vengono applicate in ordine di priorità: argomenti della riga di comando > variabili d'ambiente > file specifici del profilo > application.properties > valori predefiniti. Le origini con priorità maggiore sovrascrivono quelle con priorità minore.
Crittografia delle proprietà sensibili con Jasypt
I valori sensibili, come le password, possono essere crittografati con Jasypt Spring Boot. Memorizzi il valore crittografato nelle proprietà; Jasypt lo decrittografa all'avvio utilizzando una chiave master passata come argomento JVM.
# application.properties:
spring.datasource.password=ENC(k9r/2dfhXPQz+2jR8yzUYw==)
# JVM arg:
java -Djasypt.encryptor.password=masterSecret -jar app.jarFile YAML con più documenti
I file YAML supportano più documenti separati da ---. Utilizzi spring.config.activate.on-profile all'interno di ogni documento per definire inline la configurazione specifica del profilo.
server:
port: 8080
---
spring:
config:
activate:
on-profile: prod
server:
port: 443Verifica rapida
Quale annotazione associa un gruppo di proprietà correlate a una classe Java garantendo la sicurezza dei tipi?
Riepilogo
Utilizzi application.properties / application.yml per la configurazione. @Value per i singoli valori; @ConfigurationProperties per i gruppi. I profili separano gli ambienti. Le variabili d'ambiente sovrascrivono le proprietà: un aspetto essenziale per i container.
Domande Frequenti
La lezione «Proprietà dell'applicazione e profili» è gratuita?
Sì — il testo completo di «Proprietà dell'applicazione e profili» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Java Academy, passa a CoddyKit PRO. Il corso Java Academy include 4 lezioni in totale.
Cosa imparerò in «Proprietà dell'applicazione e profili»?
Esternalizzi la configurazione con application.properties/yml, definisca i profili e inietti i valori con @Value e @ConfigurationProperties. Eserciti Java Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Java Academy?
Non è richiesta alcuna esperienza precedente. Java Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Proprietà dell'applicazione e profili»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Java Academy?
Sì. Ogni lezione Java Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Configurazione automatica e starter di Spring Boot
- Proprietà dell'applicazione e profili
- Collegamento dei bean: @Component, @Service, @Repository
- Iniezione tramite costruttore e dipendenze circolari