मैं आम छोटे सेम परिभाषा कंटेनर (@Configuration
) जो मैं तेजी से जैसे वसंत बूट के साथ अनुप्रयोगों को विकसित करने के लिए उपयोग का एक बहुत बनाया है:क्या स्प्रिंग @ आयात या @ कॉन्फ़िगरेशन पैरामीट्रिज्ड बनाना संभव है?
@Import({
FreemarkerViewResolver.class, // registers freemarker that auto appends <#escape etc.
ConfigurationFromPropertiesFile.class, // loads conf/configuration.properties
UtfContentTypeResponse.class, // sets proper Content-language and Content-type
LocaleResolverWithLanguageSwitchController // Locale resolver + switch controller
);
class MySpringBootApp ...
उदाहरण के लिए, इस तरह के @Configuration
रों में से एक सत्र भंडारण सेट कर सकते हैं वेब नियंत्रक के साथ लोकेल कुकी चयनित भाषा आदि
पर स्विच करने के लिए वे बहुत से और पुन: उपयोग काम करने के लिए मज़ा कर रहे हैं, लेकिन यह वास्तव में यह है, जो बहुत अधिक reusege अनुमति दे सकता है parametrized बनाने के लिए बहुत अच्छा होगा।
छद्म कोड:
@Imports(imports = {
@FreemarkerViewResolver(escapeHtml = true, autoIncludeSpringMacros = true),
@ConfigurationFromProperties(path = "conf/configuration.properties"),
@ContentTypeResponse(encoding = "UTF-8"),
@LocaleResolver(switchLocaleUrl = "/locale/{loc}", defaultLocale = "en"
})
तो, मैं मूल रूप से मतलब है "विन्यास @Configurations
" मैं की तरह कुछ मतलब है। कॉन्फ़िगरेशन को इस तरह से बनाने का सबसे अच्छा तरीका क्या होगा?
अधिक कुछ इस तरह (फिर से, छद्म कोड):
@Configuration
public class MyAppConfiguration {
@Configuration
public FreemarkerConfiguration freemarkerConfiguration() {
return FreemarkerConfigurationBuilder.withEscpeAutoAppend();
}
@Configuration
public ConfigurationFromPropertiesFile conf() {
return ConfigurationFromPropertiesFile.fromPath("...");
}
@Configuration
public LocaleResolverConfigurator loc() {
return LocaleResolverConfigurator.trackedInCookie().withDefaultLocale("en").withSwitchUrl("/switchlocale/{loc}");
}
क्या आप सुनिश्चित हैं कि विधि एनोटेशन '@ कॉन्फ़िगरेशन' होना चाहिए? इसके अलावा, मैं गुण-संचालित कॉन्फ़िगरेशन से बहुत नापसंद करता हूं, क्योंकि मेरी अधिकांश कॉन्फ़िगरेशन पर्यावरण-निर्भर नहीं है और यह ड्राइव एक साथ मिश्रित सभी गुणों के विशाल बैग पर भी है। –
@ PiotrMüller आपको शायद प्रश्न में गुणों के अपने नापसंद का जिक्र करना चाहिए क्योंकि यह बदलता है कि एक अच्छा जवाब काफी काफी है। कॉन्फ़िगरेशन फ़ाइल में अधिक संरचना प्राप्त करने का एक बहुत ही आसान तरीका वाईएएमएल का उपयोग करना है। यदि आपको वाईएएमएल भी पसंद नहीं है तो आपको इसका भी उल्लेख करना चाहिए। –
1) '@ कॉन्फ़िगरेशन' एनोटेशन के लिए: मैंने अभी अपना कोड लिया और इसे "गुण-संचालित कॉन्फ़िगर" पर अपनाया। 2) आप कॉन्फ़िगरेशन डेटा के लिए भी गुणों का उपयोग कर सकते हैं जो पर्यावरण-निर्भर नहीं है। आपके दूसरे कोड ब्लॉक में सभी सेटिंग्स गुणों में कॉन्फ़िगर करने के लिए आदर्श हैं। 3) संपत्तियों के बगल में कई अन्य संभावनाएं हैं। मैंने अपना जवाब '@ ConditionalOnClass' और ब्लॉग एंट्री के लिंक के लिए एक परिदृश्य के साथ अपडेट किया। – ChrLipp