קביעת תצורה של בריכת חיבורי Tomcat באתחול האביב

1. סקירה כללית

Spring Boot הוא שכבת הפשטה דעתנית - אך עם זאת עוצמתית - הממוקמת על גבי פלטפורמת Spring פשוטה, מה שהופך את פיתוח יישומים עצמאיים ואתרי אינטרנט ללא כל דרך. Spring Boot מספק כמה תלות שימושית ב"מתנע ", שמטרתם להריץ ולבדוק יישומי Java עם טביעת רגל מינימלית.

מרכיב מרכזי אחד בתלות אלה במתחילים הוא spring-boot-starter-data-jpa. זה מאפשר לנו להשתמש ב- JPA ולעבוד עם מאגרי ייצור על ידי שימוש במישומי איגום חיבורי JDBC פופולריים, כגון HikariCP ו- Tomcat JDBC Pool Connection.

במדריך זה, נלמד כיצד להגדיר את מאגר החיבורים של Tomcat ב- Spring Boot.

2. התלות של Maven

Spring Boot משתמש ב- HikariCP כמאגר החיבורים המוגדר כברירת מחדל, בשל הביצועים המדהימים שלו והתכונות המוכנות לארגון.

כך מגדיר אביב אתחול באופן אוטומטי מקור נתונים של מאגר חיבורים:

  1. Spring Boot יחפש את HikariCP בשביל הכיתה וישתמש בו כברירת מחדל כשהוא קיים
  2. אם HikariCP לא נמצא על מסלול הכיתה, אז Spring Boot יאסוף את בריכת החיבורים של Tomcat JDBC, אם היא זמינה.
  3. אם אף אחת מהאפשרויות הללו אינה זמינה, Spring Boot יבחר באפצ'י קומונס DBCP2, אם זה זמין

כדי לקבוע תצורה של מאגר חיבורי Tomcat JDBC במקום HikariCP המוגדר כברירת מחדל, אנו לא לכלול HikariCP מ ה spring-boot-starter-data-jpa תלות והוסף את tomcat-jdbc תלות במייב שלנו 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 זמן ריצה 

גישה פשוטה זו מאפשרת לנו להשיג את Spring Boot באמצעות מאגר חיבורים של Tomcat מבלי שנצטרך לכתוב @תְצוּרָה בכיתה ולהגדיר באופן תכנותי א מקור מידע אפונה.

ראוי גם לציין שבמקרה זה אנו משתמשים במסד הנתונים H2 בזיכרון. Spring Boot יגדיר לנו את התצורה האוטומטית של H2, מבלי שיהיה צורך לציין כתובת אתר של משתמש, משתמש וסיסמה.

עלינו רק לכלול את התלות המקבילה ב- "Pom.xml" קובץ ואתחול האביב יעשה את השאר בשבילנו.

לחלופין, ניתן לדלג על אלגוריתם סריקת מאגר החיבורים בו Spring Boot משתמש ולציין במפורש מקור נתונים של איגום חיבורים בתוך ה קובץ "application.properties", משתמש ב "Spring.datasource.type" תכונה:

spring.datasource.type = org.apache.tomcat.jdbc.pool.DataSource // מאפייני מקור קפיצי אחרים

3. לצבוט את בריכת החיבורים עם "application.properties”קובץ

לאחר שהגדרנו בהצלחה מאגר חיבורים של Tomcat ב- Spring Boot, סביר מאוד שנרצה להגדיר כמה מאפיינים נוספים, לצורך אופטימיזציה של הביצועים שלהם והתאמה לדרישות ספציפיות.

אנחנו יכולים לעשות זאת ב "Application.properties" קוֹבֶץ:

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-idle = 8 spring.datasource.tomcat.default-auto-commit = true 

לידיעתך, הגדרנו מספר מאפייני איגום חיבורים נוספים, כגון הגודל הראשוני של הבריכה, והמספר המרבי והמינימלי של חיבורי סרק.

אנו יכולים גם לציין כמה מאפיינים ספציפיים למצב שינה:

# תכונות ספציפיות למצב תרדמה spring.jpa.show-sql = false spring.jpa.hibernate.ddl-auto = עדכן 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. בדיקת מאגר החיבורים

בואו נכתוב מבחן אינטגרציה פשוט כדי לבדוק כי Spring Boot הגדיר נכון את מאגר החיבורים:

@RunWith (SpringRunner.class) @SpringBootTest מחלקה ציבורית SpringBootTomcatConnectionPoolIntegrationTest {@ DataSource פרטי נתונים מקוריים; @Test הציבורי בטל givenTomcatConnectionPoolInstance_whenCheckedPoolClassName_thenCorrect () {assertThat (dataSource.getClass (). GetName ()) .isEqualTo ("org.apache.tomcat.jdbc.pool.DataSource"); }}

5. יישום לדוגמא של שורת פקודה

עם כל צנרת אגירת החיבורים שכבר מוגדרת, בואו לבנות יישום פשוט של שורת פקודה.

בכך אנו יכולים לראות כיצד לבצע כמה פעולות CRUD במסד נתונים H2 באמצעות שכבת ה- DAO החזקה ש- Spring Data JPA (ובמעבר, Spring Boot) מספקת מהקופסה.

לקבלת מדריך מפורט כיצד להתחיל להשתמש ב- Spring Data JPA, אנא עיין במאמר זה.

5.1. ה צרכן מחלקת ישויות

בואו נגדיר תחילה נאיבי צרכן מחלקת ישויות:

@Entity @Table (שם = "לקוחות") לקוח ציבורי {@Id @GeneratedValue (אסטרטגיה = GenerationType.AUTO) מזהה ארוך פרטי; @Column (name = "first_name") פרטי מחרוזת שם פרטי; // קונסטרוקציות סטנדרטיות / גטרים / סטרים / toString}

5.2. ה מאגר לקוחות מִמְשָׁק

במקרה זה, אנו רק רוצים לבצע פעולות CRUD בכמה צרכן ישויות. בנוסף, עלינו להביא את כל הלקוחות התואמים שם משפחה נתון.

כך, כל שעלינו לעשות הוא להאריך את נתוני ה- JPA של Spring Data מאגר Crud ממשק ומגדיר שיטה מותאמת:

ממשק ציבורי CustomerRepository מרחיב את CrudRepository {List findByLastName (שם מחרוזת); }

עכשיו אנחנו יכולים בקלות להשיג א צרכן ישות לפי שם המשפחה שלה.

5.3. ה CommandLineRunner יישום

לבסוף, אנחנו צריכים לפחות להתמיד בכמה צרכן גופים במסד הנתונים ודא שמאגר החיבורים של Tomcat אכן פועל.

בואו ליצור מימוש של Spring Boot's CommandLineRunner מִמְשָׁק. Spring Boot יתחיל את היישום לפני הפעלת היישום:

מחלקה ציבורית CommandLineCrudRunner מיישמת את CommandLineRunner {לוגר לוגר סופי סטטי פרטי = LoggerFactory.getLogger (CommandLineCrudRunner.class); מאגר @ CustomerRepository הפרטי האוטומטי; הפעלה בטלנית ציבורית (String ... args) זורקת Exception {repository.save (לקוח חדש ("John", "Doe")); repository.save (לקוח חדש ("ג'ניפר", "וילסון")); logger.info ("לקוחות שנמצאו עם findAll ():"); repository.findAll (). forEach (c -> logger.info (c.toString ())); logger.info ("הלקוח נמצא עם findById (1L):"); לקוח לקוח = repository.findById (1L) .orElseGet (() -> לקוח חדש ("לקוח לא קיים", "")); logger.info (customer.toString ()); logger.info ("הלקוח נמצא עם findByLastName ('וילסון'):"); repository.findByLastName ("וילסון"). forEach (c -> {logger.info (c.toString ());}); }}

בקצרה, ה- CommandLineCrudRunner מחלקה ראשונה חוסכת כמה צרכן גופים במסד הנתונים. לאחר מכן, הוא מביא את הראשון באמצעות findById () שיטה. לבסוף, הוא מאחזר לקוח באמצעות ה- findByLastName () שיטה.

5.4. הפעלת יישום אתחול האביב

כמובן, הדבר האחרון שעלינו לעשות הוא פשוט להריץ את יישום הדוגמה. אז נוכל לראות את טנדם מאגר החיבור של האביב / Tomcat בפעולה:

@SpringBootApplication מחלקה ציבורית SpringBootConsoleApplication {public static void main (String [] args) {SpringApplication.run (SpringBootConsoleApplication.class); }}

6. מסקנה

במדריך זה למדנו כיצד להגדיר ולהשתמש בבריכת חיבור Tomcat ב- Spring Boot. בנוסף, פיתחנו יישום בסיסי של שורת פקודה כדי להראות כמה קל לעבוד עם Spring Boot, מאגר חיבורי Tomcat ובסיס הנתונים H2.

כרגיל, כל דגימות הקוד המוצגות במדריך זה זמינות ב- GitHub.