2017-05-02 4 views
1

Ich habe eine grundlegende SpringBoot App. Verwenden von Spring Initializer, eingebetteter Tomcat-, Thymeleaf-Vorlagen-Engine und Paket als ausführbare JAR-Datei.SpringBoot kann Handler-Methode nicht finden

dies ist die Hauptklasse

@SpringBootApplication 
public class TdkApplication { 
    public static void main(String[] args) { 
     SpringApplication.run(TdkApplication.class, args); 
    } 
} 

Dies ist ein Controller

@Controller 
public class MockupIndexController { 
    @RequestMapping("/mockup/index") 
    public String welcome(Map<String, Object> model) { 
     return "mockups/index"; 
    } 
} 

Das ist mein pom.xml

<dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-thymeleaf</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>com.tdk.iot.core</groupId> 
      <artifactId>tdk-core</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

Aber wenn ich dieses in der URL:

Ich habe das folgende Protokoll in der Konsole

o.s.web.servlet.DispatcherServlet  : Servlet 'dispatcherServlet' configured successfully 
o.s.web.servlet.DispatcherServlet  : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/mockup/index] 
s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /mockup/index 
s.w.s.m.m.a.RequestMappingHandlerMapping : Did not find handler method for [/mockup/index] 
o.s.w.s.handler.SimpleUrlHandlerMapping : Matching patterns for request [/mockup/index] are [/**] 
o.s.w.s.handler.SimpleUrlHandlerMapping : URI Template variables for request [/mockup/index] are {} 
o.s.w.s.handler.SimpleUrlHandlerMapping : Mapping [/mockup/index] to HandlerExecutionChain with handler [ResourceHttpRequestHandler [locations=[ServletContext resource [/], class path resource [META-INF/resources/], class path resource [resources/], class path resource [static/], class path resource [public/]], resolvers=[[email protected]91134]]] and 1 interceptor 
o.s.web.servlet.DispatcherServlet  : Last-Modified value for [/mockup/index] is: -1 
o.s.web.servlet.DispatcherServlet  : Null ModelAndView returned to DispatcherServlet with name 'dispatcherServlet': assuming HandlerAdapter completed request handling 
o.s.web.servlet.DispatcherServlet  : Successfully completed request 
o.s.web.servlet.DispatcherServlet  : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/error] 
s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /error 
+0

Ich nehme an, Ihre Die Controller-Klasse wurde beim Scannen nicht gefunden, da sie sich in einem Paket befindet, das standardmäßig nicht gescannt wird. Ich denke, Ihre Anwendung ist in etwas wie com.tdk.app und Ihrem Controller in com.tdk.controller, richtig? Falls ja, verschiebe die App einfach eine Ebene nach oben auf com.tdk und dein Problem sollte verschwinden. –

+0

@ daniel.eichten, bitte umwandeln zu einer Antwort –

Antwort

5

ich Ihre Controller-Klasse übernehme während des Scannens nicht gefunden wird, weil es in einem Paket, das nicht standardmäßig überprüft werden. Ich denke, Ihre Anwendung ist in etwas wie com.tdk.app und Ihrem Controller in com.tdk.controller, richtig? Falls ja, verschiebe die App einfach eine Ebene nach oben auf com.tdk und dein Problem sollte verschwinden.

0

Das Controller-Paket sollte das untere Paket von "TdkApplication" sein, wenn sich Ihre "TdkApplication" im com.test-Paket befindet. Dann sollte sich Ihr Controller im com.test.controller-Paket befinden. Bedeutet ein Level-Paket ab, wenn wir mit Anwendungspaket Vergleich

0

folgenden wird wie sein com.app

App-Paket funktionieren sollte

dann Controller com.app.controller wäre.

, wenn Sie es wie unten verwenden dann würde Frühjahr nicht in der Lage sein, den Controller

App-Paket zu scannen: com.app.main

Controller: com.app.controller