0Pricing
Java Academy · Lekcja

Właściwości aplikacji i profile

Proszę wyodrębniać konfigurację za pomocą application.properties/yml, definiować profile i wstrzykiwać wartości przez @Value oraz @ConfigurationProperties.

Właściwości aplikacji i profile to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.

application.properties a application.yml

Spring Boot odczytuje konfigurację z pliku src/main/resources/application.properties lub application.yml. YAML obsługuje hierarchiczną konfigurację bez powtarzania kluczy; oba formaty oferują te same możliwości.

# 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: validate

Wstrzykiwanie wartości za pomocą @Value

Należy użyć @Value("${property.key}"), aby wstrzyknąć pojedynczą właściwość. Wartość domyślną można dodać za pomocą ${key:default}. Obsługiwane są wyrażenia SpEL.

@Service
public class PricingService {
    @Value("${pricing.vat-rate:0.20}")
    private double vatRate;
    @Value("${app.name}")
    private String appName;
}

@ConfigurationProperties do wiązania z kontrolą typów

Grupę powiązanych właściwości można powiązać z rekordem lub klasą Java opatrzoną adnotacją @ConfigurationProperties. Obsługiwane są adnotacje walidacyjne.

@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)

Profile: definiowanie środowisk

Profile pozwalają definiować konfiguracje zależne od środowiska. Beany lub właściwości można aktywować tylko wtedy, gdy aktywny jest określony profil.

# 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=WARN

Aktywowanie profili

Profil można aktywować za pomocą application.properties, zmiennej środowiskowej, właściwości systemowej lub właściwości Spring Boot SPRING_PROFILES_ACTIVE.

# 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 na beanach

Należy opatrzyć @Bean lub @Component adnotacją @Profile("prod"), aby rejestrować go tylko wtedy, gdy aktywny jest pasujący profil.

@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(); }
}

Grupy profili (Spring Boot 2.4+)

Można zgrupować wiele profili pod jedną nazwą. Aktywowanie grupy aktywuje jednocześnie wszystkie wymienione profile.

# application.properties:
spring.profiles.group.production=prod,metrics,cloud

Konfiguracja zewnętrzna za pomocą zmiennych środowiskowych

Spring Boot automatycznie mapuje zmienne środowiskowe na właściwości. DB_HOST jest mapowane na db.host (luźne wiązanie). To idealne rozwiązanie w przypadku wdrożeń Docker i Kubernetes.

# application.properties:
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASS}

Priorytet nadpisywania właściwości

Właściwości są stosowane zgodnie z priorytetem: argumenty wiersza poleceń > zmienne środowiskowe > pliki specyficzne dla profilu > application.properties > wartości domyślne. Źródła o wyższym priorytecie nadpisują źródła o niższym priorytecie.

Szyfrowanie poufnych właściwości za pomocą Jasypt

Poufne wartości, takie jak hasła, można szyfrować za pomocą Jasypt Spring Boot. Zaszyfrowaną wartość należy przechowywać we właściwościach; Jasypt odszyfrowuje ją podczas uruchamiania, używając klucza głównego przekazanego jako argument JVM.

# application.properties:
spring.datasource.password=ENC(k9r/2dfhXPQz+2jR8yzUYw==)
# JVM arg:
java -Djasypt.encryptor.password=masterSecret -jar app.jar

Wielodokumentowe pliki YAML

Pliki YAML obsługują wiele dokumentów oddzielonych za pomocą ---. W każdym dokumencie należy użyć spring.config.activate.on-profile do zdefiniowania konfiguracji specyficznej dla profilu bezpośrednio w pliku.

server:
  port: 8080
---
spring:
  config:
    activate:
      on-profile: prod
server:
  port: 443

Szybkie sprawdzenie

Która adnotacja wiąże grupę powiązanych właściwości z klasą Java z zachowaniem bezpieczeństwa typów?

Podsumowanie

Do konfiguracji należy używać application.properties / application.yml. @Value służy do pojedynczych wartości, a @ConfigurationProperties do grup właściwości. Profile rozdzielają środowiska. Zmienne środowiskowe nadpisują właściwości — jest to niezbędne w przypadku kontenerów.

Często zadawane pytania

Czy lekcja „Właściwości aplikacji i profile” jest bezpłatna?

Tak — pełny tekst „Właściwości aplikacji i profile” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Właściwości aplikacji i profile”?

Proszę wyodrębniać konfigurację za pomocą application.properties/yml, definiować profile i wstrzykiwać wartości przez @Value oraz @ConfigurationProperties. Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Java Academy?

Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Właściwości aplikacji i profile”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?

Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Autokonfiguracja i startery Spring Boot
  2. Właściwości aplikacji i profile
  3. Wiązanie beanów: @Component, @Service, @Repository
  4. Wstrzykiwanie przez konstruktor i zależności cykliczne
← Powrót do Java Academy