यह असंभव है। मैंने आज समाधान करने का प्रयास करने के लिए स्प्रिंग बूट के कोड का विश्लेषण करने में कुछ समय बिताया। FlywayAutoConfiguration में इनमें से किसी भी गुण को सेट करने के बारे में कुछ भी नहीं है। इसके अलावा मैंने पाया कि स्प्रिंग कभी फ्लाईवे ऑब्जेक्ट पर कॉन्फ़िगरेशन विधि को कॉल नहीं कर रहा है, फ्लाईवे.प्रोपर्टीज के लिए काम करने का एकमात्र अन्य विकल्प क्या होगा। वसंत फ्लाईवे.प्रोपर्टीज का दुरुपयोग कर रहा है और इस फ़ाइल को फ्लाईवे पर आगे प्रदान करने के बजाय वे खुद को गुणों के स्रोत के रूप में उपयोग करते हैं। यही कारण है कि FlywayAutoConfiguration का उपयोग करते समय संभावित विकल्पों का सेट इतना सीमित है। तो फ्लाईवेऑटो कॉन्फ़िगरेशन का उपयोग करना एक अच्छा विकल्प नहीं है यदि आपको फ्लाईवे की और अधिक उन्नत सुविधाओं की आवश्यकता है। लेकिन @ बीन का उपयोग करना यहां एक त्रासदी नहीं है। नीचे आप इस तरह से @Bean उपयोग का एक उदाहरण देख सकते हैं कि इस व्यवहार को लागू करने के लिए किसी भी संपत्ति फाइलों के साथ असंभव होगा:
@Profile(value = "!dbClean")
@Bean(name = "flyway", initMethod = "migrate")
public Flyway flywayNotADestroyer() {
Flyway flyway = new Flyway();
flyway.setDataSource(dataSource());
flyway.setBaselineOnMigrate(true);
return flyway;
}
@Profile(value = "dbClean")
@Bean(name = "flyway", initMethod = "migrate")
public Flyway flywayTheDestroyer() {
Flyway flyway = new Flyway();
flyway.setDataSource(dataSource());
flyway.setBaselineOnMigrate(true);
flyway.clean();
return flyway;
}
आप मैं दो स्प्रिंग प्रोफाइल यहाँ देख सकते हैं। एक डिफ़ॉल्ट जो आपके डेटाबेस को साफ़ नहीं करेगा, और डेटाबेस की पूरी तरह से साफ करेगा। बेहद सुविधाजनक।
धन्यवाद @goroncy
आप एक
application.yml
निम्नलिखित जोड़ें उपयोग कर रहे हैं। – dropofahat