การแนะนำ
หนึ่งในประเด็นสำคัญก่อนที่จะเริ่มโครงการใด ๆ ไม่ว่าจะเป็นโครงการขนาดเล็กหรือแอปพลิเคชันระดับองค์กรคือการจัดการการพึ่งพา การจัดการการพึ่งพาด้วยตนเองสำหรับแอปพลิเคชันขนาดเล็กไม่ใช่เรื่องยาก แต่สำหรับแอปพลิเคชันที่ซับซ้อนการจัดการการพึ่งพาโครงการทั้งหมดนั้นไม่เหมาะที่จะเกิดปัญหามากมายและเสียเวลาซึ่งสามารถใช้สำหรับแง่มุมที่สำคัญอื่น ๆ ของโครงการ
หนึ่งในหลักการพื้นฐานที่อยู่เบื้องหลังการบูตฤดูใบไม้ผลิคือการแก้ปัญหาที่คล้ายกัน Spring Boot Starter เป็นชุดตัวบ่งชี้การพึ่งพาที่สะดวกซึ่งสามารถรวมอยู่ในแอปพลิเคชันทุกระดับได้อย่างง่ายดาย ผู้เริ่มต้นเหล่านี้เป็นกระบวนการบู๊ตสำหรับเทคโนโลยีที่เกี่ยวข้องกับฤดูใบไม้ผลิและเราไม่จำเป็นต้องกังวลเกี่ยวกับการพึ่งพาอีกต่อไปพวกเขาจะได้รับการจัดการโดยอัตโนมัติโดย Spring Boot Starters
Starters มีการพึ่งพามากมายที่คุณต้องการเพื่อให้โครงการของคุณทำงานได้อย่างรวดเร็วและมีชุดการพึ่งพาสกรรมกริยาที่มีการจัดการที่สอดคล้องกัน
1. ทำไมเราต้องเริ่มต้น?
เมื่อเราเริ่มพัฒนาแอพพลิเคชั่นด้วย Spring Boot คำถามพื้นฐานที่นึกถึงคือทำไมเราต้องใช้สปริงเริ่มต้น? หรือ starters เหล่านี้ช่วยฉันในแอปของฉันได้อย่างไร?
ดังที่ได้กล่าวไว้ก่อนหน้านี้ผู้เริ่มต้นเหล่านี้ใช้ในการบูตแอปพลิเคชันสิ่งที่เราต้องการคือการรวมตัวเริ่มต้นที่ถูกต้องในแอปพลิเคชันและ Spring Boot จะทำให้มั่นใจได้ว่าการพึ่งพาทั้งหมดที่จำเป็นสำหรับผู้เริ่มต้นที่เลือกอยู่ใน ClassPath ของคุณ
เพื่อให้เข้าใจได้ชัดเจนยิ่งขึ้นลองยกตัวอย่างเราต้องการสร้างแอปพลิเคชัน MVC Web SPRING WEB อย่างง่ายและเราจำเป็นต้องพิจารณาประเด็นต่อไปนี้ก่อนที่เราจะเริ่มเขียนรหัสแอปพลิเคชันเว็บของเรา
การใช้ Spring Boot Starters เพื่อบูตแอปพลิเคชันเว็บสปริง MVC ของเรานั้นง่ายมากเราจำเป็นต้องรวม Spring-Boot-Starter-Web ใน POM.XML ของเรา:
<การพึ่งพา> <roupID> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Web </artifactId>
รายการข้างต้นใน pom.xml จะทำให้แน่ใจว่าการพึ่งพาที่จำเป็นทั้งหมดควรอยู่ใน classpath ดังนั้นเราทุกคนพร้อมที่จะเริ่มพัฒนาเว็บแอปพลิเคชัน
ปัจจุบัน Spring Boot มีผู้เริ่มต้นประมาณ 50 คนซึ่งไม่รวมผู้เริ่มต้นบุคคลที่สาม สำหรับรายการอัปเดตของ starters โปรดดูสปริงบูตสตาร์ทเตอร์
ต่อไปฉันจะแนะนำผู้เริ่มต้นทั่วไป
2. เว็บเริ่มต้น
นี่เป็นหนึ่งในสปริงเริ่มต้นสปริงที่ใช้กันมากที่สุดซึ่งจะทำให้มั่นใจได้ว่าการพึ่งพาทั้งหมดที่จำเป็นในการสร้างเว็บแอปพลิเคชันสปริง (รวมถึงส่วนที่เหลือ) รวมอยู่ใน Calsspath ของคุณและจะเพิ่ม Tomcat-Starter เป็นเซิร์ฟเวอร์เริ่มต้นเพื่อเรียกใช้เว็บแอปพลิเคชันของเรา ในการรวมเว็บสตาร์ทเตอร์ในแอปพลิเคชันของเราให้เพิ่มรายการต่อไปนี้ใน pom.xml
<การพึ่งพา> <roupID> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Web </artifactId>
ตอนนี้เราสามารถสร้างคอนโทรลเลอร์สปริง MVC ของเราได้
@RestController คลาสสาธารณะ sampleController {@requestmapping ("/ทักทาย") stringhello () {return "helloWorld!"; -หากคุณเรียกใช้แอปพลิเคชันและเยี่ยมชม http: // localhost: 8080/คำทักทายคุณควรจะได้รับ "Hello Word" เป็นคำตอบ เราสร้างตัวควบคุม REST ด้วยรหัสน้อยที่สุด
3. ข้อมูล JPA เริ่มต้น
แอพพลิเคชั่นส่วนใหญ่ต้องการกลไกการคงอยู่บางอย่างและ JPA เป็นมาตรฐานสำหรับการคงอยู่การเริ่มต้นใช้งานสปริงมาพร้อมกับ JPA starters คุณไม่จำเป็นต้องกำหนดค่าการพึ่งพา JPA เหล่านี้ด้วยตนเอง แต่สามารถทำได้อย่างง่ายดายโดยการเพิ่ม JPA starters ลงในแอปพลิเคชันของคุณ
<การพึ่งพา> <roupId> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Data-JPA </artifactid> </perdency>
Spring JPA Starter ให้การสนับสนุนอัตโนมัติสำหรับ H2, Derby และ HSQLDB มาดูกันว่าการสร้างแอปพลิเคชันตัวอย่าง JPA นั้นง่ายเพียงใดโดยใช้ JPA Starter
@EntityPublic ผู้ใช้คลาส {@id @GeneratedValue (กลยุทธ์ = GenerationType.auto) ID ยาวส่วนตัว; สตริงส่วนตัวชื่อแรก; สตริงส่วนตัวนามสกุล; ผู้ใช้ที่ได้รับการป้องกัน () {} ผู้ใช้สาธารณะ (String FirstName, String LastName) {//this.id = id; this.firstName = FirstName; this.lastName = LastName; } สาธารณะ Long getId () {return id; } โมฆะสาธารณะ setId (Long id) {this.id = id; } สตริงสาธารณะ getFirstName () {return firstName; } โมฆะสาธารณะ setFirstName (String firstName) {this.firstName = firstName; } สตริงสาธารณะ getLaStName () {return lastName; } โมฆะสาธารณะ setLastName (สตริงนามสกุล) {this.lastName = LastName; } @Override สตริงสาธารณะ toString () {return "ผู้ใช้ {" + "id =" + id + ", firstName = '" + FIRSTNAME +'/'' + ", LastName = '" LastName +'/'' + '}'; -นี่คือการใช้ประโยชน์จากเรา:
อินเทอร์เฟซสาธารณะ userRepositoryExtends crudrepository <ผู้ใช้, long> {list <user> findUserByLastName (String LastName);}ต่อไปเราสามารถทดสอบรหัสของเราดังนี้:
@runwith (SpringRunner.class) @springboottestpublic คลาส jpademoapplicationTests {@autowired UserRepository UserRepository; @Test Public Void Contextloads () {ผู้ใช้ผู้ใช้ = userRepository.save (ผู้ใช้ใหม่ ("ตัวอย่าง", "ผู้ใช้")); ผู้ใช้ searchUser = userRepository.findone (user.getId ()); AssertNotNull (SearchUser); asserTequals (user.getFirstName (), searchUser.getFirstName ()); -ดังที่เราเห็นในรหัสด้านบนคุณไม่จำเป็นต้องระบุการกำหนดค่าฐานข้อมูลเหล่านั้นหรือการกำหนดค่าฐานข้อมูลเพิ่มเติมอีกต่อไปโดยการเพิ่มตัวเริ่มต้น JPA เราได้รับคุณสมบัตินอกกรอบโดยไม่ต้องกำหนดค่าหรือการเข้ารหัส
คุณสามารถแก้ไขหรือปรับแต่งการกำหนดค่าเหล่านี้ได้ตลอดเวลาหากจำเป็น
4. จดหมายเริ่มต้น
การส่งอีเมลจากแอปพลิเคชันเป็นงานที่พบบ่อยมากและตอนนี้ทุกแอปพลิเคชันต้องส่งอีเมลจากระบบ Spring Boot Mail Starter เป็นวิธีที่ง่ายในการจัดการคุณสมบัตินี้โดยซ่อนความซับซ้อนทั้งหมด
เราสามารถเปิดใช้งานการสนับสนุนอีเมลโดยเพิ่ม Mail Starter ลงในแอพ
<การพึ่งพา> <roupId> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Mail </artifactid>
ฉันใช้ MailGun เป็นเซิร์ฟเวอร์ SMTP ของฉันนี่คือรายละเอียด SMTP ที่เพิ่มลงในแอปพลิเคชันของฉันไฟล์ properties:
Spring.mail.host=smtp.mailgun.orgspring.mail.username=postmaster@domain.comspring.mail.password=mypasswordspring.mail.pr operties.mail.transport.protocol = smtpspring.mail.properties.mail.smtp.port = 587spring.mail.properties.mail.smtp.auth = true
คลาสบริการอีเมลของเรารับผิดชอบในการส่งอีเมล:
@componentpublic คลาส Javaemailservice {Private Javamailsender Mailsender; Javaemailservice สาธารณะ (Javamailsender Mailsender) {this.mailsender = mailsender; } โมฆะสาธารณะ sendemail () {mimemessagePreparator messagepreparator = mimemessage -> {mimemessagehelper helper = mememessageHelper ใหม่ (mimemessage); helper.setfrom ("[email protected]"); helper.setto ("[email protected]"); helper.setsubject ("ตัวอย่างจดหมายตัวอย่าง"); helper.settext ("ทดสอบอีเมล"); - Mailsender.Send (MessagePreparator); -เราใช้ javamailsender ที่ให้ไว้ในฤดูใบไม้ผลิเพื่อส่งอีเมล รหัสทดสอบ Junit มีดังนี้:
@runwith (SpringRunner.class) @springboottestpublic คลาส emailtest {@autowired Javaemailservice Javaemailservice; @Test โมฆะสาธารณะ sendemail () {javaemailservice.sendemail (); -ในทำนองเดียวกันการส่งอีเมลง่าย ๆ ด้วยรหัสและการกำหนดค่าง่าย ๆ สปริงบูตเมล์ทำให้มั่นใจได้ว่าเครื่องมือที่จำเป็นทั้งหมดอยู่ในสถานที่เพื่อเริ่มแก้ปัญหาจริงอย่างรวดเร็ว
โปรดทราบว่าเรากำลังใช้ Javamailsender ใน Javaemailservice Bean - ถั่วถูกสร้างขึ้นโดยอัตโนมัติโดย Spring Boot
5. ทดสอบสตาร์ทเตอร์
เรามักจะใช้ Junit, Mockito หรือ SPRING TEST เพื่อทดสอบแอปพลิเคชันของเรา เราสามารถรวมไลบรารีเหล่านี้ทั้งหมดไว้ในแอปพลิเคชันของเราได้อย่างง่ายดายโดยการเพิ่มการเริ่มต้นการทดสอบสปริง
<การพึ่งพา> <roupId> org.springframework.boot </groupId> <ratifactid> การทดสอบสปริง-สตาร์เทสต์ </artifactid>
Spring Boot จะค้นหาเวอร์ชันที่ถูกต้องของเราโดยอัตโนมัติสำหรับการทดสอบแอปพลิเคชันของเรา นี่คือการทดสอบตัวอย่าง Junit:
@runwith (SpringRunner.class) @springboottestpublic คลาส emailtest {@autowired Javaemailservice Javaemailservice; @Test โมฆะสาธารณะ sendemail () {javaemailservice.sendemail (); -นอกเหนือจาก starters เหล่านี้แล้วยังมีการเริ่มต้นสปริงสปริงที่ใช้กันทั่วไปด้านล่าง
Spring-Boot-Starter-Securityspring-Boot-Starter-Web-Servicespring-Boot-Starter-Intergrationspring-Boot-Starter-Validationspring-Boot-Star-actuator
ดังที่ได้กล่าวไว้ก่อนหน้านี้ดู Spring Boot Starter สำหรับรายการล่าสุดของ starters ที่จัดทำโดย Spring Boot
สรุป
บทความนี้ให้คำแนะนำเกี่ยวกับการเริ่มต้นใช้งานสปริงที่เราพูดถึงว่าทำไมเราถึงต้องการผู้เริ่มต้นเหล่านี้และวิธีที่พวกเขาสามารถช่วยเราแนะนำแอปพลิเคชันของเราได้อย่างรวดเร็ว เราสำรวจสปริงเริ่มต้นใช้งานสปริงที่ใช้กันมากที่สุด