Programová konfigurácia zdroja údajov v Spring Boot

1. Prehľad

Spring Boot používa podrobný algoritmus na vyhľadanie a konfiguráciu súboru Dátový zdroj. To nám umožňuje ľahko získať plne nakonfigurovaný Dátový zdroj implementácia v predvolenom nastavení.

Okrem toho Spring Boot automaticky konfiguruje bleskurýchly fond pripojení - buď HikariCP, Apache Tomcat, alebo Commons DBCP, v tomto poradí, podľa toho, ktoré sú na ceste ku triede.

Zatiaľ čo Spring Boot je automatické Dátový zdroj konfigurácia vo väčšine prípadov funguje veľmi dobre, niekedy budeme potrebovať vyššiu úroveň kontroly, takže si budeme musieť založiť vlastnú Dátový zdroj implementácia, a teda preskočenie procesu automatickej konfigurácie.

V tejto príručke sa naučíme ako nakonfigurovať a Dátový zdroj programovo v Spring Boot.

2. Závislosti Maven

Vytvorenie a Dátový zdroj implementácia programovo je celkovo jednoduchá.

Aby sme sa naučili, ako to dosiahnuť, implementujeme jednoduchú vrstvu úložiska, ktorá bude vykonávať operácie CRUD na niektorých entitách JPA.

Pozrime sa na závislosti nášho demo projektu:

 org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 2.4.1 runtime 

Ako je uvedené vyššie, na vykonanie vrstvy úložiska použijeme inštanciu databázy H2 v pamäti. Pritom si budeme môcť otestovať našu programovo nakonfigurovanú konfiguráciu Dátový zdroj, bez nákladov na vykonávanie drahých databázových operácií.

Okrem toho skontrolujte najnovšiu verziu servera spring-boot-starter-data-jpa na Maven Central.

3. Konfigurácia a Dátový zdroj Programovo

Teraz, keď sa budeme držať automatu Spring Boot Dátový zdroj konfiguráciu a spustiť náš projekt v súčasnom stave, bude fungovať podľa očakávania.

Spring Boot urobí za nás všetku ťažkú ​​infraštruktúru. To zahŕňa vytvorenie H2 Dátový zdroj implementácia, ktorú automaticky spracujú HikariCP, Apache Tomcat alebo Commons DBCP, a nastavenie inštancie databázy v pamäti.

Ďalej nebudeme musieť ani vytvárať application.properties súbor, pretože Spring Boot poskytne aj niektoré predvolené nastavenia databázy.

Ako sme už spomenuli, občas budeme potrebovať vyššiu úroveň prispôsobenia, a preto si budeme musieť programovo nakonfigurovať svoju vlastnú Dátový zdroj implementácia.

Najjednoduchší spôsob, ako to dosiahnuť, je definícia a Dátový zdroj továrenská metóda a umiestnenie do triedy s poznámkami @ Konfigurácia anotácia:

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

V tomto prípade, využili sme pohodlie DataSourceBuilder trieda - neplynulá verzia staviteľského vzoru Joshua Blocha - programovo vytvoriť náš zvyk Dátový zdroj objekt.

Tento prístup je naozaj pekný, pretože staviteľ uľahčuje konfiguráciu a Dátový zdroj pomocou niektorých spoločných vlastností. Ďalej tiež používa základný fond pripojení.

4. Externalizácia Dátový zdroj Konfigurácia s application.properties Súbor

Samozrejme, je tiež možné čiastočne externalizovať našu Dátový zdroj konfigurácia. Napríklad by sme mohli definovať niektoré základné Dátový zdroj vlastnosti v našej továrenskej metóde:

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

A pár ďalších uveďte v application.properties spis:

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

Vlastnosti definované v externom zdroji, napríklad vyššie application.properties súboru alebo prostredníctvom triedy s poznámkami @ConfigurationProperties, prepíše tie definované v rozhraní Java API.

Je zrejmé, že s týmto prístupom si už svoje neudržíme Dátový zdroj konfiguračné nastavenia uložené na jednom mieste.

Na druhej strane nám to umožňuje udržiavať nastavenia konfigurácie v čase kompilácie a chodu programu pekne oddelené od seba.

To je naozaj dobré, pretože nám umožňuje ľahko nastaviť väzobný bod konfigurácie. Takto môžeme zahrnúť rôzne Dátový zdroj nastavenia z iných zdrojov bez toho, aby ste museli refaktorovať naše metódy výroby fazule.

5. Testovanie Dátový zdroj Konfigurácia

Testujeme náš zvyk Dátový zdroj konfigurácia je veľmi jednoduchá. Celý proces sa scvrkáva na vytvorenie entity JPA, definovanie základného rozhrania úložiska a testovanie vrstvy úložiska.

5.1. Vytvorenie entity JPA

Začnime definovať našu vzorovú triedu entít JPA, ktorá bude modelovať používateľov:

@Entity @Table (name = "users") verejná trieda User {@Id @GeneratedValue (strategy = GenerationType.AUTO) private long id; súkromné ​​meno reťazca; súkromný reťazcový e-mail; // štandardné konštruktory / setre / getre / toString}

5.2. Jednoduchá vrstva úložiska

Ďalej musíme implementovať základnú vrstvu úložiska, ktorá nám umožňuje vykonávať operácie CRUD na inštanciách Používateľ trieda entít definovaná vyššie.

Pretože používame Spring Data JPA, nemusíme od začiatku vytvárať vlastnú implementáciu DAO. Musíme jednoducho predĺžiť Úložisko Crud rozhranie na získanie implementácie funkčného úložiska:

@Repository verejné rozhranie UserRepository rozširuje CrudRepository {} 

5.3. Testovanie vrstvy úložiska

Nakoniec musíme skontrolovať, či je programovo nakonfigurovaný Dátový zdroj v skutočnosti pracuje. Ľahko to dosiahneme integračným testom:

@RunWith (SpringRunner.class) @DataJpaTest verejná trieda UserRepositoryIntegrationTest {@Autowired private UserRepository userRepository; @Test public void whenCalledSave_thenCorrectNumberOfUsers () {userRepository.save (nový používateľ ("Bob", "[chránený e-mailom]")); Zoznam používateľov = (Zoznam) userRepository.findAll (); assertThat (users.size ()). isEqualTo (1); }}

The UserRepositoryIntegrationTest trieda je pekne vysvetľujúca. Jednoducho nacvičuje dve z metód CRUD rozhrania úložiska na pretrvávanie a hľadanie entít.

Všimnite si, že bez ohľadu na to, či sa rozhodneme programovo nakonfigurovať našu Dátový zdroj implementáciu alebo ju rozdeliť na metódu konfigurácie Java a application.properties súboru, mali by sme vždy získať funkčné pripojenie k databáze.

5.4. Spustenie ukážkovej aplikácie

Nakoniec môžeme spustiť našu ukážkovú aplikáciu pomocou štandardu hlavný() metóda:

@SpringBootApplication verejná trieda Aplikácia {public static void main (String [] args) {SpringApplication.run (Application.class, args); } @Bean public Spustenie CommandLineRunner (UserRepository userRepository) vyvolá výnimku {return (String [] args) -> {User user1 = new User ("John", "[email protected]"); Používateľ user2 = nový Používateľ ("Julie", "[chránený e-mailom]"); userRepository.save (user1); userRepository.save (user2); userRepository.findAll (). forEach (user -> System.out.println (user);};}} 

Už sme otestovali vrstvu úložiska, takže sme si istí, že naša Dátový zdroj bol úspešne nakonfigurovaný. Ak teda spustíme ukážkovú aplikáciu, mali by sme na našom výstupe z konzoly vidieť zoznam Používateľ subjekty uložené v databáze.

6. Záver

V tomto návode naučili sme sa, ako nakonfigurovať a Dátový zdroj implementácia programovo v Spring Boot.

Ako obvykle sú všetky ukážky kódu zobrazené v tomto tutoriáli dostupné na GitHub.