2014-11-25 38 views
3

我將一個webapp從spring 2.5遷移到spring 4,但是我發現了一個問題。 我有兩個不同的網址,適用於同一類的兩種不同配置。 在我的老版本,我有這樣的:Spring 4 @controller config

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
     <property name="mappings"> 
      <props> 
       <prop key="/url1.htm">bean1</prop> 
       <prop key="/url2.htm">bean2</prop> 
       </props> 
      </property> 
    </bean> 

和豆類像

<bean id="bean1" class="com.package.Controller" scope="session"> 
    <property name="property" value="value of property"/> 
</bean> 
<bean id="bean2" class="com.package.Controller" scope="session"> 
    <property name="property" value="a different value of the same property"/> 
</bean> 

我怎麼能做到這一點與註解?

+0

而你爲什麼要放棄呢?你使用Spring 4的事實並不意味着'SimpleUrlHandlerMapping'應該被放棄。如果你有一個有效的用例,那麼請繼續使用'Controller'而不是'@ Controller'。 – 2014-11-25 12:12:07

+0

但它仍然可以在春季4?我如何在我的註釋@Configuration類中配置它? – Miscillo 2014-11-25 12:37:11

+0

只需創建一個實例並填寫映射。 – 2014-11-25 12:38:17

回答

1

在您的控制器類上使用@Controller註釋並使用@RequestMapping註釋映射/url1.htm和/url2.htm。查看Spring Reference @RequestMapping

你會得到這樣的事情:

@Controller 
@RequestMapping("/url1.htm") 
public class bean1{ 

} 
@Controller 
@RequestMapping("/url2.htm") 
public class bean2{ 

} 

並設置bean的屬性中的每個類。 如果你不想重複的方法,你可以這樣做

@Controller 
public class bean1{ 

    @RequestMapping("/url{id}.htm") 
    public void setBeanProp(@PathVariable int id){ 
    if (id.equals(1)) 
    ... 
    else 
    ... 


    } 
+0

是的。我知道。我不想複製每個bean中的所有方法,因爲對我而言,這是浪費時間並且只會影響將來的維護 – Miscillo 2014-11-25 12:33:27

+0

「複製所有方法」?你是什​​麼意思,你複製哪種方法?如果控制器類中有方法可以放在兩個控制器類中,則可以將它們放在一個類中,並使兩個控制器都擴展該類。 – Jesper 2014-11-25 18:23:28