Sovelluksen ominaisuudet ja profiilit
Siirrä konfiguraatio ulkoisiin application.properties/yml-tiedostoihin, määritä profiileja ja injektoi arvoja @Value- ja @ConfigurationProperties-annotaatioilla.
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: validateArvojen 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=WARNProfiilien 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,cloudUlkoistettu 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.jarMonen 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: 443Pikatarkistus
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.
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
- Automaattinen konfigurointi ja Spring Boot -starterit
- Sovelluksen ominaisuudet ja profiilit
- Beanien kytkentä: @Component, @Service, @Repository
- Konstruktori-injektio ja kehäriippuvuudet