Adatforrás programozása a tavaszi indításkor

1. Áttekintés

A Spring Boot véleményes algoritmust használ az a keresésére és konfigurálására Adatforrás. Ez lehetővé teszi számunkra, hogy könnyen beszerezzünk egy teljesen konfiguráltat Adatforrás megvalósítás alapértelmezés szerint.

Ezenkívül a Spring Boot automatikusan beállítja a villámgyors kapcsolatkészletet - akár a HikariCP-t, az Apache Tomcat-ot, akár a Commons DBCP-t ebben a sorrendben, attól függően, hogy melyik az osztályúton van.

Míg a Spring Boot automatikus Adatforrás A konfiguráció a legtöbb esetben nagyon jól működik, néha magasabb szintű ellenőrzésre lesz szükségünk, ezért be kell állítanunk a sajátunkat Adatforrás megvalósítás, ezért kihagyja az automatikus konfigurációs folyamatot.

Ebben az oktatóanyagban megtanuljuk hogyan konfigurálja a Adatforrás programszerűen a Spring Boot-ban.

2. A Maven-függőségek

A. Létrehozása Adatforrás a megvalósítás programszerűen egyszerű, átfogó.

Ennek megvalósításához megtanulunk egy egyszerű tároló réteget, amely CRUD műveleteket hajt végre egyes JPA entitásokon.

Vessünk egy pillantást demo projektünk függőségeire:

 org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 2.4.1 futásidejű 

Amint a fentiekből látható, a memóriában lévő H2 adatbázis-példányt fogjuk használni a tároló réteg gyakorlásához. Ennek során tesztelhetjük programozottan konfigurált programunkat Adatforrás, költséges adatbázis-műveletek végrehajtásának költsége nélkül.

Ezenkívül ellenőrizzük a legfrissebb verzióját spring-boot-starter-data-jpa a Maven Central-on.

3. Konfigurálása a Adatforrás Programozatosan

Ha ragaszkodunk a Spring Boot automatikájához Adatforrás konfigurálása és a projekt jelenlegi állapotában történő futtatása csak a várt módon fog működni.

A Spring Boot elvégzi az összes nehéz infrastrukturális vízvezetéket számunkra. Ez magában foglalja a H2 létrehozását Adatforrás megvalósítás, amelyet a HikariCP, az Apache Tomcat vagy a Commons DBCP automatikusan kezel, és létrehoz egy memóriában lévő adatbázis-példányt.

Ezenkívül nem is kell létrehoznunk egy alkalmazás.tulajdonságok fájlt, mivel a Spring Boot néhány alapértelmezett adatbázis-beállítást is megad.

Mint korábban említettük, időnként magasabb szintű testreszabásra lesz szükségünk, ezért programozatosan kell konfigurálnunk a sajátunkat Adatforrás végrehajtás.

Ennek legegyszerűbb módja a Adatforrás gyári módszert, és a @ Konfiguráció annotáció:

@Configuration public class DataSourceConfig {@Bean public DataSource getDataSource () {DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create (); dataSourceBuilder.driverClassName ("org.h2.Driver"); dataSourceBuilder.url ("jdbc: h2: mem: teszt"); dataSourceBuilder.username ("SA"); dataSourceBuilder.password (""); return dataSourceBuilder.build (); }}

Ebben az esetben, a kényelmet használtuk DataSourceBuilder osztály - Joshua Bloch készítő mintájának nem folyékony változata - programozottan létrehozni a szokásunkat Adatforrás tárgy.

Ez a megközelítés nagyon szép, mert a készítő megkönnyíti a Adatforrás néhány közös tulajdonság felhasználásával. Ezenkívül az alapul szolgáló kapcsolatkészletet is használja.

4. Külsősítés Adatforrás Konfigurálás a alkalmazás.tulajdonságok File

Természetesen az is lehetséges, hogy részlegesen externálissá tesszük Adatforrás konfiguráció. Például meghatározhatnánk néhány alapszintet Adatforrás tulajdonságok gyári módszerünkben:

@Bean public DataSource getDataSource () {DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create (); dataSourceBuilder.username ("SA"); dataSourceBuilder.password (""); return dataSourceBuilder.build (); }

És adjon meg néhány további elemet a alkalmazás.tulajdonságok fájl:

spring.datasource.url = jdbc: h2: mem: teszt spring.datasource.driver-class-name = org.h2.Driver 

Egy külső forrásban definiált tulajdonságok, például a fentiek alkalmazás.tulajdonságok fájlban vagy egy osztályon keresztül @ConfigurationProperties, felülírja a Java API-ban definiáltakat.

Nyilvánvalóvá válik, hogy ezzel a megközelítéssel nem fogjuk tovább tartani a magunkat Adatforrás konfigurációs beállításokat egyetlen helyen tárolja.

Másrészt lehetővé teszi számunkra, hogy a fordítási és futási konfigurációs beállításokat szépen elkülönítsük egymástól.

Ez nagyon jó, mivel lehetővé teszi számunkra, hogy egyszerűen beállítsunk egy konfigurációs kötési pontot. Így befogadhatunk másokat is Adatforrás beállításokat más forrásból, anélkül, hogy át kellene alakítanunk a babgyári módszereinket.

5. A. Tesztelése Adatforrás Konfiguráció

Testünk tesztelése Adatforrás konfigurálása nagyon egyszerű. Az egész folyamat csak egy JPA-entitás létrehozására, egy alapvető lerakat-interfész meghatározására és a lerakati réteg tesztelésére áll.

5.1. JPA-entitás létrehozása

Kezdjük meghatározni a JPA entitásosztály mintáját, amely a felhasználókat modellezi:

@Entity @Table (name = "users") public class User {@Id @GeneratedValue (strategy = GenerationType.AUTO) private long id; privát karakterlánc neve; privát karakterlánc e-mail; // standard kivitelezők / beállítók / getters / toString}

5.2. Egyszerű adattár réteg

Ezután meg kell valósítanunk egy alapvető repository réteget, amely lehetővé teszi számunkra, hogy CRUD műveleteket hajtsunk végre a Felhasználó fent meghatározott entitásosztály.

Mivel a Spring Data JPA-t használjuk, nem kell a nulláról saját DAO-implementációt létrehoznunk. Egyszerűen ki kell terjesztenünk a CrudRepository felület egy működő lerakat megvalósítás megszerzéséhez:

@Repository nyilvános felület A UserRepository kiterjeszti a CrudRepository {} 

5.3. A tároló réteg tesztelése

Végül ellenőriznünk kell, hogy programszerűen van-e konfigurálva Adatforrás valójában működik. Ezt könnyen elvégezhetjük egy integrációs teszt segítségével:

@RunWith (SpringRunner.class) @DataJpaTest nyilvános osztály UserRepositoryIntegrationTest {@Autowired private UserRepository userRepository; @Test public void whenCalledSave_thenCorrectNumberOfUsers () {userRepository.save (new User ("Bob", "[email protected]")); Lista felhasználók = (Lista) userRepository.findAll (); assertThat (users.size ()). isEqualTo (1); }}

A UserRepositoryIntegrationTest osztály eléggé magától értetődő. Egyszerűen gyakorolja az adattár interfész CRUD metódusainak két részét, hogy megmaradjanak és megtalálják az entitásokat.

Figyelje meg, hogy függetlenül attól, hogy a programunk konfigurálásával döntünk-e Adatforrás implementációt, vagy ossza fel Java konfigurációs módszerre és a alkalmazás.tulajdonságok fájlt, mindig be kell szereznünk egy működő adatbázis-kapcsolatot.

5.4. A minta alkalmazás futtatása

Végül egy szabvány segítségével futtathatjuk a bemutató alkalmazásunkat fő() módszer:

@SpringBootApplication public class Application {public static void main (String [] args) {SpringApplication.run (Application.class, args); } @Bean nyilvános CommandLineRunner futtatás (UserRepository userRepository) dobja a Kivételt {return (String [] argumentum) -> {User user1 = új felhasználó ("John", "[email protected]"); User2 = new User ("Julie", "[email protected]"); userRepository.save (user1); userRepository.save (user2); userRepository.findAll (). forEach (felhasználó -> System.out.println (felhasználó);};}} 

Már teszteltük a tároló réteget, így biztosak vagyunk benne, hogy a mi Adatforrás konfigurálása sikeres volt. Így, ha a mintaalkalmazást futtatjuk, a konzol kimenetén látnunk kell a listát Felhasználó az adatbázisban tárolt entitások.

6. Következtetés

Ebben az oktatóanyagban megtanultuk konfigurálni a Adatforrás megvalósítás programozottan a Spring Boot-ban.

Szokás szerint az ebben az oktatóanyagban bemutatott összes kódminta elérhető a GitHubon.