การกำหนดค่าอัตโนมัติและตัวเริ่มต้น Spring Boot
ทำความเข้าใจว่า Spring Boot กำหนดค่า bean โดยอัตโนมัติตามดีเพนเดนซีใน classpath และคำอธิบายเงื่อนไขอย่างไร
การกำหนดค่าอัตโนมัติและตัวเริ่มต้น Spring Boot เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
การกำหนดค่าอัตโนมัติของ Spring Boot คืออะไร
การกำหนดค่าอัตโนมัติจะกำหนดค่าบีนของ Spring โดยอัตโนมัติตามสิ่งที่มีอยู่ในเส้นทางคลาสและสภาพแวดล้อม ช่วยขจัดการตั้งค่า @Bean ด้วยตนเองสำหรับการเชื่อมต่อทั่วไป
แอนโนเทชัน @SpringBootApplication
@SpringBootApplication เป็นการรวม @Configuration, @EnableAutoConfiguration และ @ComponentScan ไว้ด้วยกัน โดยจะเปิดใช้งานการกำหนดค่าอัตโนมัติและการสแกนคอมโพเนนต์
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}การทำงานของการกำหนดค่าอัตโนมัติ
Spring Boot จะสแกน META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (Spring Boot 3) เพื่ออ่านรายการคลาสสำหรับการกำหนดค่าอัตโนมัติ แต่ละคลาสจะถูกนำมาใช้ตามเงื่อนไข
// Spring Boot 3 imports file:
// org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
// org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration@ConditionalOnClass และ @ConditionalOnMissingBean
คลาสการกำหนดค่าอัตโนมัติจะใช้แอนโนเทชัน @Conditional เพื่อให้มีผลเฉพาะเมื่อเป็นไปตามเงื่อนไขที่กำหนด เช่น มีคลาสอยู่ในเส้นทางคลาส หรือยังไม่มีการกำหนดบีนไว้
@AutoConfiguration
@ConditionalOnClass(DataSource.class)
@ConditionalOnMissingBean(DataSource.class)
public class DataSourceAutoConfiguration {
@Bean
public DataSource dataSource(DataSourceProperties props) {
return DataSourceBuilder.create().build();
}
}สตาร์ทเตอร์ของ Spring Boot
สตาร์ทเตอร์คือชุดตัวบ่งชี้การพึ่งพาที่คัดสรรไว้ การเพิ่ม spring-boot-starter-web ลงในโครงการจะนำ Spring MVC, ทอมแคต, Jackson และการกำหนดค่าอัตโนมัติของสิ่งเหล่านี้เข้ามา โดยไม่ต้องค้นหาการพึ่งพาด้วยตนเอง
// build.gradle:
dependencies {
implementation "org.springframework.boot:spring-boot-starter-web"
implementation "org.springframework.boot:spring-boot-starter-data-jpa"
implementation "org.springframework.boot:spring-boot-starter-validation"
}สตาร์ทเตอร์ที่ใช้บ่อย
สตาร์ทเตอร์สำคัญ ได้แก่ starter-web (REST + Tomcat), starter-data-jpa (JPA + Hibernate), starter-security, starter-test (JUnit + Mockito) และ starter-actuator (สุขภาพ/เมตริก)
การแทนที่การกำหนดค่าอัตโนมัติ
กำหนด @Bean ของชนิดเดียวกันขึ้นมาเอง เพื่อให้มีลำดับความสำคัญเหนือบีนที่กำหนดค่าโดยอัตโนมัติ @ConditionalOnMissingBean จะทำให้บีนที่กำหนดค่าโดยอัตโนมัติถูกสร้างขึ้นเฉพาะเมื่อไม่มีบีนของคุณอยู่
// Override auto-configured ObjectMapper:
@Configuration
public class JacksonConfig {
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper()
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.registerModule(new JavaTimeModule());
}
}การยกเว้นการกำหนดค่าอัตโนมัติ
ยกเว้นคลาสการกำหนดค่าอัตโนมัติเฉพาะรายการที่คุณไม่ต้องการได้ ซึ่งมีประโยชน์เมื่อสตาร์ทเตอร์นำสิ่งที่คุณต้องการกำหนดค่าด้วยตนเองเข้ามา
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
SecurityAutoConfiguration.class
})
public class MyApp { ... }การสร้างสตาร์ทเตอร์ของคุณเอง
สร้างมอดูลสตาร์ทเตอร์ที่มีคลาสการกำหนดค่าอัตโนมัติ และลงทะเบียนคลาสนั้นใน META-INF/spring/....AutoConfiguration.imports โครงการอื่นที่รวมสตาร์ทเตอร์ของคุณไว้จะได้รับบีนของคุณโดยอัตโนมัติ
// my-starter/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports:
// com.example.MyLibraryAutoConfigurationการแก้ไขข้อผิดพลาดของการกำหนดค่าอัตโนมัติ
เรียกใช้ด้วยแฟล็ก --debug หรือตั้งค่า logging.level.org.springframework.boot.autoconfigure=DEBUG เพื่อดู "CONDITIONS EVALUATION REPORT" ซึ่งแสดงรายการการกำหนดค่าอัตโนมัติที่ถูกนำมาใช้หรือถูกยกเว้น พร้อมเหตุผล
java -jar myapp.jar --debug
# Or in application.properties:
# logging.level.org.springframework.boot.autoconfigure=DEBUGจุดปลายทาง /conditions ของ Actuator
เปิดใช้งาน spring-boot-starter-actuator และเปิดเผยจุดปลายทาง /actuator/conditions เพื่อดูรายงานการประเมินการกำหนดค่าอัตโนมัติขณะทำงาน โดยไม่ต้องเริ่มระบบใหม่
# application.properties:
management.endpoints.web.exposure.include=conditions
# Then:
curl http://localhost:8080/actuator/conditionsตรวจสอบความเข้าใจอย่างรวดเร็ว
แอนโนเทชันใดทำให้สร้างบีนได้เฉพาะเมื่อยังไม่มีบีนชนิดนั้นกำหนดไว้
ทบทวน
การกำหนดค่าอัตโนมัติใช้แอนโนเทชันแบบมีเงื่อนไขเพื่อเชื่อมต่อบีนตามเส้นทางคลาสและบีนที่มีอยู่ สตาร์ทเตอร์จะรวมการพึ่งพาและการกำหนดค่าอัตโนมัติไว้ด้วยกัน คุณสามารถแทนที่ได้ด้วยบีนของตนเอง ยกเว้นการกำหนดค่าที่ไม่ต้องการ และแก้ไขข้อผิดพลาดด้วย --debug
คำถามที่พบบ่อย
บทเรียน “การกำหนดค่าอัตโนมัติและตัวเริ่มต้น Spring Boot” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การกำหนดค่าอัตโนมัติและตัวเริ่มต้น Spring Boot” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การกำหนดค่าอัตโนมัติและตัวเริ่มต้น Spring Boot”
ทำความเข้าใจว่า Spring Boot กำหนดค่า bean โดยอัตโนมัติตามดีเพนเดนซีใน classpath และคำอธิบายเงื่อนไขอย่างไร คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การกำหนดค่าอัตโนมัติและตัวเริ่มต้น Spring Boot” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม
ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การกำหนดค่าอัตโนมัติและตัวเริ่มต้น Spring Boot
- คุณสมบัติแอปพลิเคชันและโปรไฟล์
- การเชื่อมโยง Bean: @Component, @Service, @Repository
- การฉีดผ่านคอนสตรักเตอร์และดีเพนเดนซีแบบวนรอบ