0Pricing
Java Academy · บทเรียน

การกำหนดค่าอัตโนมัติและตัวเริ่มต้น 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การกำหนดค่าอัตโนมัติและตัวเริ่มต้น Spring Boot
  2. คุณสมบัติแอปพลิเคชันและโปรไฟล์
  3. การเชื่อมโยง Bean: @Component, @Service, @Repository
  4. การฉีดผ่านคอนสตรักเตอร์และดีเพนเดนซีแบบวนรอบ
← กลับไปที่ Java Academy