Konfiguraatioprofiilit
Ohjelmistotuotannossa jokaisella ohjelmistokehittäjällä on oma ympäristö, missä sovellusta voi kehittää ja testata. Sovelluksen lähdekoodi sijaitsee versionhallintapalvelussa, ja sovelluksen toiminta ei ole riippuvainen työympäristöstä — sovelluksen siirtämisen koneelta toiselle ei lähtökohtaisesti pitäisi vaatia muutoksia ohjelman lähdekoodiin. Samanlaista joustavuutta odotetaan myös silloin kun sovelluksesta julkaistaan uusi versio käyttäjille.
Sovelluksen julkaisun eli esimerkiksi tuotantopalvelimelle siirtämisen ei tule vaatia muutoksia sovelluksen lähdekoodiin. Kun sovellus on julkisessa käytössä, sillä on tyypillisesti ainakin usein eri tietokantaosoite kuin sovelluskehitysvaiheessa, mahdollisesti eri tietokannanhallintajärjestelmä, sekä todennäköisiä erilaisia salasanoihin ja ohjelman tuottamiin tulostuksiin (logeihin) liittyviä asetuksia.
Jotta tämä olisi mahdollista, tarvitsemme siis tavan asetusten määrittelyyn ympäristökohtaisesti.
Spring-projekteissa konfiguraatiotiedostot sijaitsevat kansiossa src/main/resources/
. Spring etsii kansiosta tiedostoa nimeltä application.properties
, johon ohjelmistokehittäjä voi määritellä sovelluksen käynnistyksen yhteydessä käytettäviä asetuksia. Asetustiedosto voi sisältää esimerkiksi tietokantaan liittyviä asetuksia:
spring.datasource.url=jdbc:h2:file:./database;create=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.jpa.show-sql=true
Yllä ensimmäiset kolme riviä kertovat tietokantaan liittyviä asetuksia. Ensimmäisellä rivillä kerrotaan tietokannan JDBC-osoite (käytetään H2-tietokannanhallintajärjestelmää), toisella rivillä kerrotaan muokataanko tietokantaa tarvittaessa automaattisesti (tietokantaa voi päivittää), ja kolmannella rivillä kerrotaan Hibernate-nimiselle ORM-kirjastolle käytettävä tietokannanhallintajärjestelmä sekä erityisesti sen spesifit komennot. Näitä seuraa asetus, joka määrää ohjelmaa kirjoittamaan tietokantakyselyt lokiin.
Ympäristömuuttuja ja profiili
SPRING_PROFILES_ACTIVE
avulla. Ympäristömuuttujan voi antaa sovellukselle parametrina sovellusta käynnistettäessä (java ... -Dspring.profiles.active=arvo ...
) tai vaihtoehtoisesti sen voi asettaa unix-koneissa export-komennolla.Mikäli profiili määritellään, etsii Spring oletuskonfiguraatiotiedoston application.properties
lisäksi myös annettuun profiiliin liittyvää konfiguraatiotiedostoa. Jos profiiliksi on määritelty production
, etsii Spring konfiguraatiotiedostoa application-production.properties
. Vastaavasti, jos profiiliksi on määritelty test
, etsii Spring konfiguraatiotiedostoa application-test.properties
.
Profiilit ja erilaiset ympäristöt
Sovelluskehittäjän omalla koneella oleva sovellus, staging-ympäristössä oleva sovellus ja tuotantoympäristössä oleva sovellus voivat kaikki näyttää identtisiltä. Huonossa tapauksessa ainoa tapa paikallisen kehitysympäristön ja tuotantoympäristön erottamiseen on selaimen osoitepalkki — kumpikin sijaitsee erillisessä osoitteessa.
Ei ole kovin harvinaista, että sovelluskehittäjä testaa paikallisessa ympäristössä tekemiään muutoksia vahingossa tuotannossa. Tällainen testailu voi sisältää esimerkiksi — verkkokaupassa — tuotteiden lisäämistä ja poistamista sekä vaikkapa tuotteiden hintojen muuttamista. Profiileja voi käyttää myös tällaisen toiminnan vähentämiseen.
Profiilien avulla konkreettista käyttäjälle näkyvää sovellusta voi muuttaa. Esimerkiksi sovelluksen ylläpitäjille tarkoitetussa käyttöliittymässä voisi hyvin lukea isoilla kirjaimilla "TUOTANTOYMPÄRISTÖ" kun taas paikallisessa käytössä olevassa sovelluksessa voisi lukea isoilla kirjaimilla "TESTIYMPÄRISTÖ". Vastaavasti koko värimaailman voisi muokata toisenlaiseksi yms. Tutustutaan tähän mahdollisuuteen seuraavaksi tehtävän kautta.