Konfigurácia fondu pripojení Tomcat v Spring Boot

1. Prehľad

Spring Boot je milostná - a napriek tomu výkonná - vrstva abstrakcie umiestnená na vrchole obyčajnej platformy Spring, vďaka ktorej je vývoj samostatných a webových aplikácií samozrejmosťou. Spring Boot poskytuje niekoľko užitočných „štartovacích“ závislostí zameraných na spustenie a testovanie aplikácií Java s minimálnou stopou.

Jedným z kľúčových komponentov týchto závislostí štartéra je spring-boot-starter-data-jpa. To nám umožňuje používať JPA a pracovať s produkčnými databázami pomocou niektorých populárnych implementácií zdieľania pripojení JDBC, ako sú HikariCP a Tomcat JDBC Connection Pool.

V tomto návode sa dozvieme, ako nakonfigurovať fond pripojení Tomcat v Spring Boot.

2. Závislosti Maven

Spring Boot používa HikariCP ako predvolený fond pripojení, kvôli jeho pozoruhodnému výkonu a funkčnostiam pripraveným na podnikanie.

Tu je príklad, ako Spring Boot automaticky konfiguruje zdroj údajov fondu pripojení:

  1. Spring Boot vyhľadá HikariCP na ceste triedy a použije ho predvolene, ak je prítomný
  2. Ak sa HikariCP nenájde na ceste k triede, potom Spring Boot vyzdvihne bazén pripojenia Tomcat JDBC, ak je k dispozícii
  3. Ak nie je k dispozícii žiadna z týchto možností, Spring Boot vyberie Apache Commons DBCP2, ak je k dispozícii

Ak chcete nakonfigurovať fond pripojení Tomcat JDBC namiesto predvoleného protokolu HikariCP, urobíme to vylúčiť HikariCP z spring-boot-starter-data-jpa závislosť a pridať kocúr-jdbc Maven závislosť k nášmu 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 runtime 

Tento jednoduchý prístup nám umožňuje získať Spring Boot pomocou fondu pripojení Tomcat bez nutnosti písania a @ Konfigurácia triedy a programovo definovať a Dátový zdroj fazuľa.

Za zmienku tiež stojí, že v tomto prípade používame databázu H2 v pamäti. Spring Boot pre nás automaticky nakonfiguruje H2, bez toho aby ste museli špecifikovať URL databázy, užívateľa a heslo.

Musíme len zahrnúť zodpovedajúcu závislosť do „Pom.xml“ súbor a Spring Boot urobí zvyšok za nás.

Prípadne je možné preskočiť algoritmus skenovania oblasti pripojení, ktorý používa Spring Boot, a explicitne určiť zdroj údajov o združení pripojení v Súbor „application.properties“, pomocou „Spring.datasource.type“ nehnuteľnosť:

spring.datasource.type = org.apache.tomcat.jdbc.pool.DataSource // ďalšie vlastnosti jarného zdroja údajov

3. Vyladenie skupiny pripojení znakom „application.properties”Súbor

Keď sme úspešne nakonfigurovali fond pripojení Tomcat v Spring Boot, je veľmi pravdepodobné, že budeme chcieť nastaviť niektoré ďalšie vlastnosti na optimalizáciu jej výkonu a vyhovenie niektorým konkrétnym požiadavkám.

Môžeme tak urobiť v „Application.properties“ spis:

spring.datasource.tomcat.initial-size = 15 spring.datasource.tomcat.max-wait = 20 000 spring.datasource.tomcat.max-active = 50 spring.datasource.tomcat.max-idle = 15 spring.datasource.tomcat. min-nečinnosť = 8 spring.datasource.tomcat.default-auto-commit = true 

Upozorňujeme, že sme nakonfigurovali niekoľko ďalších vlastností združovania pripojení, napríklad počiatočnú veľkosť fondu a maximálny a minimálny počet nečinných pripojení.

Môžeme tiež určiť niektoré vlastnosti špecifické pre režim dlhodobého spánku:

# Hibernovať špecifické vlastnosti spring.jpa.show-sql = false spring.jpa.hibernate.ddl-auto = aktualizovať 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 = false 

4. Testovanie skupiny pripojení

Poďme napísať jednoduchý test integrácie a skontrolovať, či Spring Boot správne nakonfiguroval fond pripojení:

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

5. Ukážka aplikácie príkazového riadku

Keď už sú všetky inštalatérske práce na združovaní pripojení nastavené, vytvorme jednoduchú aplikáciu príkazového riadku.

Pritom môžeme vidieť, ako vykonávať niektoré operácie CRUD v databáze H2 pomocou výkonnej vrstvy DAO, ktorú Spring Data JPA (a prechodne Spring Boot) poskytuje už po vybalení z krabice.

Podrobný návod, ako začať používať Spring Data JPA, nájdete v tomto článku.

5.1. The Zákazník Trieda entity

Najprv si definujme naivitu Zákazník trieda entity:

@Entity @Table (name = "customers") verejná trieda Zákazník {@Id @GeneratedValue (strategy = GenerationType.AUTO) súkromné ​​dlhé ID; @Column (name = "first_name") private String firstName; // štandardné konštruktory / getre / setre / toString}

5.2. The Repozitár zákazníka Rozhranie

V tomto prípade chceme iba vykonať operácie CRUD na niekoľkých Zákazník subjekty. Ďalej musíme získať všetkých zákazníkov, ktorí sa zhodujú s daným priezviskom.

Takže všetko, čo musíme urobiť, je rozšíriť SPZ Spring Data Úložisko Crud rozhranie a definovať metódu na mieru:

verejné rozhranie CustomerRepository rozširuje CrudRepository {List findByLastName (reťazec priezvisko); }

Teraz môžeme ľahko načítať a Zákazník entita podľa jej priezviska.

5.3. The CommandLineRunner Implementácia

Nakoniec musíme aspoň pár z nich vytrvať Zákazník subjekty v databáze a overte, či náš fond pripojení Tomcat skutočne funguje.

Poďme vytvoriť implementáciu Spring Boot's CommandLineRunner rozhranie. Spring Boot pred zavedením aplikácie zavedie implementáciu do zavádzacieho systému:

verejná trieda CommandLineCrudRunner implementuje CommandLineRunner {private static final Logger logger = LoggerFactory.getLogger (CommandLineCrudRunner.class); @Autowired private final CustomerRepository repository; public void run (String ... args) hodí Exception {repository.save (new Customer ("John", "Doe")); repository.save (nový zákazník ("Jennifer", "Wilson")); logger.info ("Zákazníci našli položku findAll ():"); repository.findAll (). forEach (c -> logger.info (c.toString ())); logger.info ("Zákazník bol nájdený s findById (1L):"); Zákazník zákazník = repository.findById (1L) .orElseGet (() -> nový zákazník ("Neexistujúci zákazník", "")); logger.info (customer.toString ()); logger.info ("Zákazník bol nájdený s findByLastName ('Wilson'):"); repository.findByLastName ("Wilson"). forEach (c -> {logger.info (c.toString ());}); }}

Stručne povedané, CommandLineCrudRunner trieda najskôr ušetrí pár Zákazník subjekty v databáze. Ďalej načíta prvý pomocou findById () metóda. Nakoniec získa zákazníka pomocou findByLastName () metóda.

5.4. Spustenie aplikácie Spring Boot

Posledná vec, ktorú musíme samozrejme urobiť, je spustiť iba ukážkovú aplikáciu. Potom môžeme vidieť tandemový fond pripojení Spring Boot / Tomcat:

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

6. Záver

V tomto tutoriáli sme sa naučili, ako nakonfigurovať a používať fond pripojení Tomcat v Spring Boot. Okrem toho sme vyvinuli základnú aplikáciu príkazového riadku, ktorá ukazuje, aká ľahká je práca s Spring Boot, bazénom pripojenia Tomcat a databázou H2.

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


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