2013-07-12 3 views
0

Я ищу решение для конкретного сопоставления пакета в приложении Spring 3.ResquestMapping для определенного пакета

У меня есть нормальное отображение, например:

@Controller 
public class Home { 

    @RequestMapping(value ="/") 
    public void home() { 
     ... 
    } 
} 

и другой, как это:

@Controller 
@RequestMapping(value ="/api") 
public class ApiResource { 

    @RequestMapping(value ="/resource") 
    public void home() { 
     ... 
    } 
} 

Проблема в том, у меня есть много ресурсов, отображенных на /API контекста.

Есть ли способ рассказать весне, что все классы в пакете com.example.api будут доступны в контексте /api? Или что-то, что мне не нужно ставить @RequestMapping(value = "/api") на каждый класс Controller для этого api?

Мне нужно использовать обычный контекст: "/*" для другого Controllers.

ответ

0

Ну, я решил создать аннотацию для такого рода Controller в api пакете.

@ApiController 
    public class ApiResource { 

     @RequestMapping(value ="/resource") 
     public void home() { 
      ... 
     } 
    } 

интерфейс был объявлен как это:

@Target({ElementType.TYPE}) 
@Retention(RetentionPolicy.RUNTIME) 
@Controller 
@RequestMapping(value = "/api") 
public @interface ApiController { 

} 

И работал очень хорошо, отображение всех запросов аннотированные с @ApiController на /api/* пути.

0

Да, вы можете сделать это в applicationContext.xml файл со следующим:

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
<property name="mappings"> 
    <map> 
    <entry key="/doSomething/**" value-ref="controllerA"/> 
    <entry key="/other Thing/**" value-ref="controllerB"/> 
    </map> 
</property> 
</bean> 
+0

Спасибо вам за ответ. В этом подходе мне нужно поместить каждый класс в это сопоставление? Или ключ ввода будет принимать только пакет? –

+0

Я пробовал и не решал = (Мне все равно нужно поместить все классы в контекст приложения. –

Смежные вопросы