สำหรับวันนี้เรียกว่าไปแงะจากที่เรียน Course manning live project อันเก่าที่ดองไว้ แล้วพยายามหาความสัมพันธ์ เพราะ ผมสาย dotnet มันเลยไม่มีแบบนี้ เลยเขียน Blog ไว้ดีกว่าครับ
@ConditionalOnProperty คือ อะไร
เจ้า @ConditionalOnProperty
เป็นส่วนนึงของ Spring Boot auto-configuration module (org.springframework.boot.autoconfigure.*) แล้วที่นี่มันทำให้ Config แล้วยิงพวก feature flag ได้ จากตัวอย่าง ผมสงสัยตัว

ที่นี้มาลองชำแหละกัน DomainConfig
public class DomainConfig { @Bean(name = "auditingDateTimeProvider") public DateTimeProvider dateTimeProvider() { return () -> Optional.of(OffsetDateTime.now()); } @Bean @DependsOn("liquibase") @ConditionalOnProperty(prefix = "dataloader", name = "loadsample", havingValue = "true") public SampleDataLoader sampleDataLoader(){ return new SampleDataLoader(); } }
ตรงบรรทัดที่ 9 การกำหนด config ถ้าใน application.properties หรือ yaml ส่วนของ SampleDataLoader ทำงานจะเป็นตามนี้ครับ
dataloader.loadsample=true
เงื่อนไขทำงานของ sampleDataLoader ถ้ามี dataloader + loadsample และต้องมีค่า true (จากในส่วน havingValue)
แล้วที่นี้ในส่วน ENV จะถ้าสังเกตุใน Docker Compose จะกำหนดตามนี้
DATALOADER_LOADSAMPLE=true
นอกจากนี้ยังมี matchIfMissing
ใช้สำหรับกำหนดค่า default กรณีที่ไม่ได้กำหนด properties ไว้ใน application.properties หรือ yaml หรือ ENV มันจะใช้ค่า default แทน
อ๋อ และลองกลับไปหาใน dotnet มีทำ lib คล้ายๆกันไว้ https://github.com/yuzd/Autofac.Annotation ถ้าเป็นปกติแล้ว เหมือนจะเขียน if ดักเอาเองใน DI
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.