Tomcat Connection Pool beállítása tavaszi indításkor

1. Áttekintés

A Spring Boot egy véleményes - mégis erőteljes - absztrakciós réteg, amely a sima Spring platform tetején helyezkedik el, ami az önálló és a webes alkalmazások fejlesztését nem okozza. A Spring Boot néhány praktikus „indító” függőséget kínál, amelyek célja a Java alkalmazások futtatása és tesztelése, minimális területtel.

Ezeknek a kezdőfüggőségeknek az egyik legfontosabb eleme a spring-boot-starter-data-jpa. Ez lehetővé teszi számunkra a JPA használatát és a termelési adatbázisokkal való munkát néhány népszerű JDBC kapcsolat-pooling megvalósítás, például a HikariCP és a Tomcat JDBC Connection Pool használatával.

Ebben az oktatóanyagban megtanuljuk, hogyan kell konfigurálni a Tomcat kapcsolati készletet a Spring Boot alkalmazásban.

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

A Spring Boot figyelemre méltó teljesítménye és nagyvállalati készségei miatt a HikariCP-t használja alapértelmezett csatlakozási készletként.

Így állítja be a Spring Boot automatikusan a kapcsolatkészlet adatforrását:

  1. A Spring Boot megkeresi a HikariCP-t az osztályúton, és alapértelmezés szerint használja, ha jelen van
  2. Ha a HikariCP nem található az osztályúton, akkor a Spring Boot felveszi a Tomcat JDBC kapcsolatkészletet, ha elérhető
  3. Ha ezek a lehetőségek nem állnak rendelkezésre, a Spring Boot az Apache Commons DBCP2 lehetőséget választja, ha ez elérhető

A Tomcat JDBC kapcsolatkészlet konfigurálásához az alapértelmezett HikariCP helyett megtesszük kizárni HikariCP tól spring-boot-starter-data-jpa függőséget, és adja hozzá a tomcat-jdbc Maven-függőség a miénknek pom.xml:

 org.springframework.boot spring-boot-starter-data-jpa com.zaxxer HikariCP org.apache.tomcat tomcat-jdbc 9.0.10 com.h2database h2 1.4.197 futásidejű 

Ez az egyszerű megközelítés lehetővé teszi számunkra, hogy a Tomcat kapcsolatkészlet használatával megszerezzük a tavaszi rendszerindítást anélkül, hogy a-t kellene írni @ Konfiguráció osztály és programozottan definiálja a Adatforrás bab.

Azt is érdemes megjegyezni, hogy ebben az esetben a H2 memóriában lévő adatbázist használjuk. A Spring Boot automatikusan konfigurálja a H2-t számunkra, anélkül, hogy meg kellene adnia az adatbázis URL-jét, a felhasználót és a jelszót.

Csak be kell illesztenünk a megfelelő függőséget a „Pom.xml” fájl és a Spring Boot elvégzi a többit helyettünk.

Alternatív megoldásként átugorható a Spring Boot által használt kapcsolatkészlet-keresési algoritmus, és kifejezetten megadható a kapcsolatkészlet-adatforrás ban,-ben „Application.properties” fájl, használni a „Spring.datasource.type” ingatlan:

spring.datasource.type = org.apache.tomcat.jdbc.pool.DataSource // egyéb tavaszi adatforrás tulajdonságok

3. A kapcsolatkészlet módosítása a „alkalmazás.tulajdonságok”File

Miután sikeresen konfiguráltuk a Tomcat kapcsolatkészletet a Spring Boot alkalmazásban, nagyon valószínű, hogy további tulajdonságokat szeretnénk beállítani a teljesítmény optimalizálása és néhány speciális követelmény kielégítése érdekében.

Megtehetjük a „Application.properties” fájl:

spring.datasource.tomcat.initial-size = 15 spring.datasource.tomcat.max-wait = 20000 spring.datasource.tomcat.max-active = 50 spring.datasource.tomcat.max-idle = 15 spring.datasource.tomcat. min-tétlen = 8 spring.datasource.tomcat.default-auto-lead = true 

Felhívjuk figyelmét, hogy konfiguráltunk néhány további kapcsolatkészlet tulajdonságot, például a készlet kezdeti méretét, valamint a tétlen kapcsolatok maximális és minimális számát.

Megadhatunk néhány hibernált állapotra jellemző tulajdonságot is:

# Hibernálás specifikus tulajdonságai spring.jpa.show-sql = false spring.jpa.hibernate.ddl-auto = update spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.H2Dialect spring.jpa.properties.hibernate.id.new_generator_mappings = hamis 

4. A Connection Pool tesztelése

Írjunk egy egyszerű integrációs tesztet annak ellenőrzésére, hogy a Spring Boot megfelelően konfigurálta-e a kapcsolatkészletet:

@RunWith (SpringRunner.class) @SpringBootTest nyilvános osztály SpringBootTomcatConnectionPoolIntegrationTest {@Autowired private DataSource dataSource; @Test public void givenTomcatConnectionPoolInstance_whenCheckedPoolClassName_thenCorrect () {assertThat (dataSource.getClass (). GetName ()) .isEqualTo ("org.apache.tomcat.jdbc.pool.DataSource"); }}

5. Minta parancssori alkalmazás

Ha az összes csatlakozási pooling vízvezeték már be van állítva, készítsünk egy egyszerű parancssori alkalmazást.

Ennek során láthatjuk, hogyan lehet néhány CRUD műveletet végrehajtani egy H2 adatbázisban az erőteljes DAO réteg használatával, amelyet a Spring Data JPA (és átmenetileg a Spring Boot) biztosít a dobozból.

A Spring Data JPA használatának megkezdéséhez részletes útmutatóért tekintse meg ezt a cikket.

5.1. A Vevő Entitás osztály

Először határozzunk meg egy naiv kifejezést Vevő entitásosztály:

@Entity @Table (name = "customers") public class Ügyfél {@Id @GeneratedValue (strategy = GenerationType.AUTO) private long id; @ Oszlop (név = "keresztnév") privát karakterlánc keresztnév; // standard konstruktorok / szerelők / beállítók / toString}

5.2. A CustomerRepository Felület

Ebben az esetben csak néhány CRUD műveletet akarunk végrehajtani Vevő entitások. Ezenkívül be kell szereznünk az összes olyan ügyfelet, amely megfelel egy adott vezetéknévnek.

Így, csak annyit kell tennünk, hogy kiterjesztjük a Spring Data JPA-t CrudRepository interfészt és meghatározzon egy testreszabott módszert:

nyilvános felület A CustomerRepository kiterjeszti a CrudRepository {List findByLastName (String vezetéknév); }

Most könnyen megszerezhetjük a Vevő entitás a vezetéknevén.

5.3. A CommandLineRunner Végrehajtás

Végül legalább meg kell tartanunk néhányat Vevő az adatbázisban szereplő entitások és ellenőrizze, hogy a Tomcat kapcsolatkészletünk valóban működik-e.

Hozzuk létre a Spring Boot's megvalósítását CommandLineRunner felület. A Spring Boot az alkalmazás elindítása előtt indítja a megvalósítást:

public class CommandLineCrudRunner végrehajtja a CommandLineRunner {private static final Logger logger = LoggerFactory.getLogger (CommandLineCrudRunner.class); @Autowired private final CustomerRepository repository; public void run (String ... args) dobja a Exception {repository.save (new Customer ("John", "Doe")); repository.save (új Ügyfél ("Jennifer", "Wilson")); logger.info ("Az ügyfelek megtalálták a findAll () -t:"); repository.findAll (). forEach (c -> logger.info (c.toString ())); logger.info ("Az ügyfél megtalálta a findById (1L) fájlt:"); Ügyfél ügyfél = repository.findById (1L) .orElseGet (() -> új Ügyfél ("Nem létező ügyfél", "")); logger.info (customer.toString ()); logger.info ("Az ügyfél megtalálta a findByLastName ('Wilson') néven:"); repository.findByLastName ("Wilson"). forEach (c -> {logger.info (c.toString ());}); }}

Dióhéjban a CommandLineCrudRunner osztály először spórol párat Vevő entitások az adatbázisban. Ezután beolvassa az elsőt a findById () módszer. Végül lekér egy ügyfelet a findByLastName () módszer.

5.4. A tavaszi rendszerindító alkalmazás futtatása

Természetesen az utolsó dolog, amit meg kell tennünk, csak a minta alkalmazás futtatása. Ezután láthatjuk a Spring Boot / Tomcat kapcsolatkészlet tandemet működés közben:

@SpringBootApplication public class SpringBootConsoleApplication {public static void main (String [] args) {SpringApplication.run (SpringBootConsoleApplication.class); }}

6. Következtetés

Ebben az oktatóanyagban megtanultuk a Tomcat kapcsolati készlet konfigurálását és használatát a Spring Boot alkalmazásban. Emellett kifejlesztettünk egy alapvető parancssori alkalmazást annak bemutatására, hogy milyen egyszerű a munka a Spring Boot, a Tomcat kapcsolati készlet és a H2 adatbázis használatával.

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


$config[zx-auto] not found$config[zx-overlay] not found