32

私は次のようなものが混在しているプロジェクトに参加しました。

@RequestMapping(value = "events / ...");
@RequestMapping(value = "/ events / ...");

(メソッドレベルのアノテーションの前にスラッシュがある場合とない場合)。

私は検索を実行します:

サイト:http://static.springsource.org/spring/docs/3.1.xスラッシュ

そしてこれらのリンクを読んでください:

しかし、これらの情報源のいずれも、スラッシュをスキップすることが許可された理由に答えていません。Springの公式ドキュメントでは、常にスラッシュ付きの例が示されています...

公式ドキュメントまたはSpringソースを指す必要があります。

4

1 に答える 1

58

重要ではありません。パスがthenで始まらない場合は/、Spring(DefaultAnnotationHandlerMapping)がパスを追加します。

String[] determineUrlsForHandler(String beanName)クラス行122(Spring 3.1.2)のメソッドを参照してくださいDefaultAnnotationHandlerMapping(つまり、クラスレベル用です)

String[] methodLevelPatterns = determineUrlsForHandlerMethods(handlerType, true);
for (String typeLevelPattern : typeLevelPatterns) {
    if (!typeLevelPattern.startsWith("/")) {
            typeLevelPattern = "/" + typeLevelPattern;
    }

String[] determineUrlsForHandler(Class<?> handlerType, final boolean hasTypeLevelMapping))クラス行182(Spring 3.1.2)のメソッドを参照してくださいDefaultAnnotationHandlerMapping(つまり、メソッドレベル用です)

String[] mappedPatterns = mapping.value();
if (mappedPatterns.length > 0) {
for (String mappedPattern : mappedPatterns) {
    if (!hasTypeLevelMapping && !mappedPattern.startsWith("/")) {
        mappedPattern = "/" + mappedPattern;
    }   
于 2012-10-05T10:08:53.677 に答える