1

Ich habe eine benutzerdefinierte RequestMappingHandlerMapping-Klasse, die eine spezielle Annotation als Teil ihrer Zuordnungskriterien interpretiert. Es wird auf diese Weise als Bean instanziiert:Benutzerdefiniertes RequestMappingHandlerMapping mit MockMvc

@Configuration 
@EnableWebMvc 
public class ConfigServletConfig extends WebMvcConfigurerAdapter { 
    @Bean 
    public RequestMappingHandlerMapping requestMappingHandlerMapping() { 
     RequestMappingHandlerMapping handlerMapping = new VersionRangeRequestMappingHandlerMapping(); 
     handlerMapping.setOrder(0); 
     return handlerMapping; 
    } 
} 

Aber wenn ich ein MockMvc Objekt zum Testen erstellen (mit standaloneSetup) diese Zuordnung Handler nicht verwendet wird. Ohne Berücksichtigung der zusätzlichen Anmerkung schlägt das Mapping fehl, da ich mehrere Controller-Methoden mit demselben @ RequestMapping verwende. Die Annotation unterscheidet sie.

Wie kann ich MockMvc für die Verwendung dieses benutzerdefinierten Mapping-Handlers konfigurieren?

Antwort

1

Wie kann ich MockMvc konfigurieren, um diesen benutzerdefinierten Zuordnungshandler zu verwenden?

Ab Spring Framework 4.3.x ist es derzeit nicht möglich, einen benutzerdefinierten RequestMappingHandlerMapping mit dem standaloneSetup() Builder für MockMvc zu registrieren.

Das Team erwägt jedoch, eine solche Unterstützung in Spring Framework 5.0 hinzuzufügen. Weitere Informationen finden Sie unter SPR-15472.

0

Sie können mit der Methode "getRequestMappingHandlerMapping überschreiben" von WebMvcConfigurerAdapter konfigurieren.

@Configuration 
public class ConfigServletConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public RequestMappingHandlerMapping getRequestMappingHandlerMapping() { 
     RequestMappingHandlerMapping handlerMapping = new VersionRangeRequestMappingHandlerMapping(); 
     handlerMapping.setOrder(0); 
     return handlerMapping; 
    } 
} 
Verwandte Themen