2017-07-19 123 views
0

問題是我的其餘控制器沒有被調用。springboot restcontroller not called

@SpringBootApplication(scanBasePackages = { "com.company.base" }) 
public class Application { 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(Application.class, args); 
    } 
} 

@RestController 
@RequestMapping("/data") 
public class DataController { 

    private static final Logger LOGGER = LogManager.getLogger(MethodHandles.lookup().lookupClass()); 

    @Autowired 
    private SusbscriberRepository susbscriberRepository; 

    @RequestMapping(value = "/subscribers", method = RequestMethod.GET) 
    public HttpEntity<SubscriberResource> findAll() { 
    ... 
    } 

    @RequestMapping(value = "/subscriber/{id}", method = RequestMethod.GET) 
    public ResponseEntity<SubscriberResource> findSubscriber(@PathVariable(value = "id") Long id) { 
     ... 
    } 
} 


<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.company.base</groupId> 
    <artifactId>demo</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>Grenty</name> 
    <description>Grenty project</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.4.RELEASE</version> 
     <relativePath /> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
     <log4j.version>1.2.17</log4j.version> 
    </properties> 

    <organization> 
     <name>SA Technologies</name> 
     <url>www.satechnologies.com</url> 
    </organization> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-amqp</artifactId> 
      <exclusions> 
       <exclusion> 
        <groupId>org.apache.httpcomponents</groupId> 
        <artifactId>httpclient</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-hateoas</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-validation</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-autoconfigure</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.hateoas</groupId> 
      <artifactId>spring-hateoas</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
      <version>3.6</version> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>${log4j.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate</artifactId> 
      <version>3.5.4-Final</version> 
      <type>pom</type> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpclient</artifactId> 
      <version>4.5.2</version><!--$NO-MVN-MAN-VER$ --> 
     </dependency> 
     <dependency> 
      <groupId>com.h2database</groupId> 
      <artifactId>h2</artifactId> 
       <version>1.4.196</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>de.jpdigital</groupId> 
       <artifactId>hibernate5-ddl-maven-plugin</artifactId> 
       <version>1.0.1-hibernate-5.1.2.Final</version> 
       <configuration> 
        <dialects> 
         <param>postgresql9</param> 
        </dialects> 
        <packages> 
         <param>com.company.base.model</param> 
        </packages> 
        <outputDirectory>${project.basedir}/docs/sql</outputDirectory> 
       </configuration> 
       <executions> 
        <execution> 
         <goals> 
          <goal>gen-ddl</goal> 
         </goals> 
         <phase>process-classes</phase> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

在Springboot啓動日誌中,映射這些url。

我確定我錯過了一些東西,但我不確定是什麼。

即使彈簧的例子不起作用:gs-actuator-service-master

+0

請閱讀[在什麼情況下,我可以添加「緊急」或其他類似的短語到我的問題,以獲得更快的答案?](/ meta.stackoverflow.com/q/326569) - 摘要是,這不是解決志願者問題的理想方式,而且可能對獲得答案起反作用。請不要將這添加到您的問題。 – halfer

+0

您能否詳細說明在向其中一個端點發出HTTP請求時會發生什麼?你有迴應嗎?如果是這樣,什麼是HTTP狀態?另外,我沒有看到spring-boot-starter-web依賴...這是最傳統的方法。 –

+0

我得到whitelabel錯誤頁面和404 HTTP錯誤。 – Sofiane

回答

1

三件事情可能有問題

  1. spring-boot-starter-tomcat & spring-boot-starter-web LIB失蹤。
  2. 由於您定義了scanBasePackages,您的控制器必須在com.company.base包下。
  3. Spring boot應用程序必須以SpringBootServletInitializer運行。這種情況只會在您作爲Java應用程序運行時才需要,如果您從mvn命令運行則不需要這種情況。

請添加庫&更新您的Application.java並重試。

@SpringBootApplication 
public class Application extends SpringBootServletInitializer { 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
     return application.sources(Application.class); 
    } 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(Application.class, args); 
    } 

} 
0

如果控制器正在啓動應用程序包或子包,則刪除scanBasePackages = {「com.company.base」}。 或者在組件掃描中也包含主類的包。