2015-04-14 3 views
6

विशिष्टस्प्रिंग बूट में एकाधिक यूआरएल मानचित्रण (उपनाम) कैसे करना है

में मैं वसंत बूट में अनेक URL का मिलान करने के लिए (दूसरे शब्दों उपनाम में) चाहते

विस्तार में

मेरे वसंत बूट एप्लिकेशन में ग्राहक नियंत्रक क्लास मुख्य रूप से /customer यूआरएल में मैप किया गया है जैसा कि मैं आसानी से बदलने योग्य एलियास बनाना चाहता हूं

@Controller 
@RequestMapping(value = "/customer") 
public class CustomerController{ 

मेरे सामान्य वसंत एप्लिकेशन में जहां मैं एक्सएमएल में मैपिंग करता हूं, मैं नीचे यूआरएल मैपिंग कर सकता हूं।

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
    <props> 
     <prop key="/customer.htm">customerController</prop> 
     <prop key="/tester.htm">customerController</prop> 
    </props> 
    </property> 
</bean> 

<bean id="customerController" 
    class="com. ... .controller.CustomerController" /> 

स्प्रिंग बूट, संपत्ति फ़ाइल विन्यास के रूप में autoconfig ही छत के नीचे काम कर रहा है समय के सबसे में सहायक होते हैं।

  1. क्या कोई तरीका है कि मैं संपत्ति फ़ाइलों का उपयोग कर ऐसा कर सकता हूं।
  2. वसंत बूट में यूआरएल मैपिंग करते समय पालन करने का सबसे अच्छा अभ्यास क्या है जिसे मैं संकलन के बाद आसानी से बदल सकता हूं।

मैं इसे खोजने के लिए बहुत थक गया। लेकिन अंत में एसओ समुदाय सहायता में समाप्त हो गया। कृपया इस पर मेरी सहायता करें।

उत्तर

12

आप एक प्रोप फ़ाइल से बाहर मानचित्रण ड्राइव करने के लिए चाहते हैं, तो आप

आप आवेदन में नीचे के रूप में यह कर सकते हैं।आप डॉन

@Controller 
@RequestMapping(value = { "${url.mapping}" }) 
public class CustomerController{ 

के बजाय एक jvm arg के रूप में, प्रोप फ़ाइल में प्रदान करता है, तो आप url.mapping प्रदान करते हैं तो: गुण, कुंजी मान युग्म

url.mapping : /test/sample 

जोड़ने नियंत्रक पर आप निम्न कर सकते हैं यदि आप मान बदलते हैं तो पुनः संयोजित करना होगा, बस पुनरारंभ करें (जो मुझे आशा है कि आप कर सकते हैं, इसे स्वयं नहीं किया है) चाल चलाना चाहिए।

एकाधिक मैपिंग के लिए, आपको प्रति मैपिंग में एक जोड़ना होगा और नीचे जैसा नियंत्रक में मैप करना होगा।

@Controller 
@RequestMapping(value = { "${url.mapping}","${url.mapping.two}" }) 
public class CustomerController{ 
+0

धन्यवाद। ऐसा करने के लिए यह एक साफ तरीका लगता है। –

+0

@ फ़ारजफारुक। स्वीकार करना दूसरों और मुझे मदद करता है :) – minion

8

this उदाहरण पर एक नज़र डालें।

यूआरएल मानचित्रण करने का सबसे अच्छा तरीका एनोटेशन के साथ नियंत्रक में करना है।

मूल रूप से

: localhost:8080/Hello और localhost:8080/Hello/otherMapping

:

@RestController 
    @RequestMapping("/Hello") 
    public class HelloController { 

     @RequestMapping("/") 
     public String index() { 
      return "Greetings from Spring Boot!"; 
     } 

     @RequestMapping("/otherMapping") 
     public String otherMapping() { 
      return "Greetings from Spring Boot!"; 
     } 
    } 

इस तरह यूआरएल तरह दिखेगा:

@RestController 
public class HelloController { 

    @RequestMapping("/") 
    public String index() { 
     return "Greetings from Spring Boot!"; 
    } 

} 

IMHO सबसे अच्छा अभ्यास हर विधि के लिए नियंत्रक के लिए एक मानचित्रण और एक का उपयोग करने के लिए है

संपादित करें:

कई मैपिंग के लिए आप उपयोग कर सकते हैं:

@RequestMapping({ "/home", "/contact" }) 
+0

उत्तर के लिए धन्यवाद। मैंने अपना प्रश्न अपडेट किया। मुझे एलियास जैसे कई यूआरएल मैपिंग करने की ज़रूरत है। मैं उपनिवेश के बिना उपनाम मैपिंग को बदलना पसंद करूंगा। –

+0

@FarajFarook अपडेट देखें। मैं "संकलन" भाग के लिए मदद नहीं कर सकता। –

+0

धन्यवाद Evgeni। आपकी मदद बहुत सराहना की है। मैंने आपका जवाब अप-वोट किया। लेकिन मैं इस पर कुछ और टिप्पणियों का इंतजार करूंगा कि यह पता लगाने के लिए कि क्या ऐसा करने का कोई तरीका है :) –