Java Academy · Oppitunti

Sovelluksen ominaisuudet ja profiilit

Siirrä konfiguraatio ulkoisiin application.properties/yml-tiedostoihin, määritä profiileja ja injektoi arvoja @Value- ja @ConfigurationProperties-annotaatioilla.

Oppitunti 2/413 vaihetta

Sovelluksen ominaisuudet ja profiilit on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 4 oppituntia.

application.properties ja application.yml

Spring Boot lukee konfiguraation tiedostosta src/main/resources/application.properties tai application.yml. YAML tukee hierarkkisia asetuksia ilman avainten toistamista; molemmat ovat ominaisuuksiltaan vastaavia.

# 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

Arvojen injektointi @Value-annotaatiolla

Käyttäkää @Value("${property.key}")-annotaatiota yksittäisen ominaisuuden arvon injektointiin. Lisätkää oletusarvo muodossa ${key:default}. SpEL-lausekkeita tuetaan.

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

@ConfigurationProperties tyypitystä varten

Sitokaa toisiinsa liittyvien ominaisuuksien ryhmä Java recordiin tai luokkaan, joka on merkitty @ConfigurationProperties-annotaatiolla. Validointiannotaatioita tuetaan.

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

Profiilit: ympäristöjen määrittäminen

Profiilien avulla voitte käyttää ympäristökohtaisia konfiguraatioita. Määritelkää beaneja tai ominaisuuksia, jotka ovat aktiivisia vain tietyn profiilin ollessa aktiivinen.

# 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

Profiilien aktivointi

Aktivoikaa profiili application.properties-tiedoston, ympäristömuuttujan, järjestelmäominaisuuden tai Spring Bootin SPRING_PROFILES_ACTIVE-asetuksen avulla.

# 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 beaneissa

Merkitkää @Bean tai @Component annotaatiolla @Profile("prod"), jotta se rekisteröidään vain vastaavan profiilin ollessa aktiivinen.

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

Profiiliryhmät (Spring Boot 2.4+)

Ryhmitelkää useita profiileja yhden nimen alle. Ryhmän aktivoiminen aktivoi kaikki luetellut profiilit samanaikaisesti.

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

Ulkoistettu konfigurointi ympäristömuuttujilla

Spring Boot yhdistää ympäristömuuttujat automaattisesti ominaisuuksiin. DB_HOST yhdistyy ominaisuuteen db.host (joustava sidonta). Tämä sopii erinomaisesti Docker- ja Kubernetes-käyttöönottoihin.

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

Ominaisuuksien ohitusjärjestys

Ominaisuudet otetaan käyttöön prioriteettijärjestyksessä: komentoriviargumentit > ympäristömuuttujat > profiilikohtaiset tiedostot > application.properties > oletusarvot. Korkeamman prioriteetin lähteet ohittavat alemman prioriteetin lähteet.

Arkaluonteisten ominaisuuksien salaaminen Jasyptilla

Arkaluonteiset arvot, kuten salasanat, voidaan salata Jasypt Spring Bootilla. Tallentakaa salattu arvo ominaisuuksiin; Jasypt purkaa sen käynnistyksen yhteydessä käyttämällä JVM-argumenttina välitettyä pääavainta.

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

Monen dokumentin YAML-tiedostot

YAML-tiedostot tukevat useita dokumentteja, jotka erotetaan toisistaan merkinnällä ---. Käyttäkää jokaisessa dokumentissa asetusta spring.config.activate.on-profile profiilikohtaisen asetuksen määrittämiseen suoraan tiedostossa.

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

Pikatarkistus

Millä annotaatiolla toisiinsa liittyvien ominaisuuksien ryhmä sidotaan tyyppiturvallisesti Java-luokkaan?

Kertaus

Käyttäkää asetuksiin application.properties- tai application.yml-tiedostoa. Käyttäkää @Value-annotaatiota yksittäisiin arvoihin ja @ConfigurationProperties-annotaatiota ryhmiin. Profiileilla ympäristöt pidetään erillään. Ympäristömuuttujat ohittavat ominaisuudet — tämä on välttämätöntä konteissa.

Aloita maksutta

Opi Java tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
104
Oppitunnit
374

Usein kysytyt kysymykset

Onko oppitunti ”Sovelluksen ominaisuudet ja profiilit” ilmainen?

Kyllä – oppitunnin ”Sovelluksen ominaisuudet ja profiilit” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Sovelluksen ominaisuudet ja profiilit”?

Siirrä konfiguraatio ulkoisiin application.properties/yml-tiedostoihin, määritä profiileja ja injektoi arvoja @Value- ja @ConfigurationProperties-annotaatioilla. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Sovelluksen ominaisuudet ja profiilit”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?

Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Automaattinen konfigurointi ja Spring Boot -starterit
  2. Sovelluksen ominaisuudet ja profiilit
  3. Beanien kytkentä: @Component, @Service, @Repository
  4. Konstruktori-injektio ja kehäriippuvuudet
← Takaisin: Java Academy