2017-04-13 129 views
2

我創建了Spring Boot Maven項目,但是我的RequestMapping以及localhost:8080返回了404錯誤頁面。我認爲問題在於我的軟件包是如何設置的,但我已經嘗試了多個問題的解決方案,而且我仍然無法解決錯誤頁面。你們能否指出我如何解決這個問題的正確方向?也許我需要在我的Main類上面添加Component註釋?但我試過這個解決方案,錯誤仍然存​​在。Spring Boot | localhost:8080顯示404錯誤頁面

這裏是我的包結構:

/src/main/java 
     ControllerLayer 
      UsersController.java 
     DataAccessLayer 
      UsersDAL.java 
     ServiceLayer 
      UsersService.java 
     Main 
      Main.java 

Main.java:

@SpringBootApplication(scanBasePackages = { 
    "/src/main/java/ControllerLayer", "/src/main/java/DataAccessLayer", 
    "/src/main/java/ServiceLayer" }) 
    public class Main { 

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

UsersController.java:

import Entities.Users; 
import ServiceLayer.UsersService; 

@RestController 
@RequestMapping("/users") 
public class UsersController { 

     @Autowired 
     private UsersService usersService; 

     @RequestMapping(value = 
     "/create/{userId}/{userPassword}/{userAge}/{userEmail}" 
     + "/{userFirstName}/{userlastName}", method = 
     RequestMethod.POST) 

     public void createUser(@PathVariable("userId")String userId, 
     @PathVariable("userPassword")String userPassword, 
     @PathVariable("userAge")int userAge, 
     @PathVariable("userEmail")String userEmail, 
     @PathVariable("userFirstName")String userFirstName, 
     @PathVariable("userLastName")String userLastName) { 

      usersService.createUser(new Users(userId, userPassword, 
      userAge, userEmail, userFirstName, userLastName)); 
     } 
    } 

UserService.java

import DataAccessLayer.UsersDAL; 
import Entities.Users; 

@Service 
public class UsersService { 

    @Autowired 
    private UsersDAL usersDAL; 

    public void createUser(Users user) { 
     usersDAL.createUser(user); 
    } 
} 

的pom.xml:

<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>xProjectAlpha</groupId> 
     <artifactId>org.htech.xProjectAlpha</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <packaging>jar</packaging> 

     <parent> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-parent</artifactId> 
      <version>1.5.2.RELEASE</version> 
     </parent> 

     <properties> 
      <java.version>1.8</java.version> 
     </properties> 

     <dependencies> 
      <dependency> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-web</artifactId> 
      </dependency> 

      <dependency> 
       <groupId>org.hibernate</groupId> 
       <artifactId>hibernate-core</artifactId> 
       <version>5.2.9.Final</version><!--$NO-MVN-MAN-VER$--> 
      </dependency> 
     </dependencies> 

     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-maven-plugin</artifactId> 
       </plugin> 
      </plugins> 
     </build> 

</project> 
+0

您需要從'scanBasePackages'刪除'/ src目錄/主/ JAVA /'然後是什麼你想的網址是什麼? – developer

+0

如果我刪除/ src/main/java,Spring會拋出一個UnsatisfiedDependencyException:創建名爲'usersController'的bean時出錯:通過字段'usersService'表示的不滿意的依賴關係。我使用的URL只是localhost:8080/users –

+0

你可以在上面的類中添加你的包名嗎? – developer

回答

2

當發送的請求,則響應應被返回。在你的情況下,你沒有發送任何與響應內容,這就是爲什麼你得到404錯誤(頁面未找到)。

2

在main.java,嘗試:

@SpringBootApplication(scanBasePackages = { 
    "ControllerLayer", "DataAccessLayer", 
    "ServiceLayer" }) 

你的包名不應該包括在項目的根路徑。

+0

如果我刪除了/ src/main/java,Spring會拋出一個UnsatisfiedDependencyException:創建名爲'usersController'的bean的錯誤:通過字段'usersService'表示的不滿意的依賴關係 –

+0

@Jered Hart它現在正在接管你的控制器。 usersController中的usersService有問題 - 跟蹤堆棧跟蹤併發布另一個問題。嘗試添加「主」到scanBasePacakges。 – MuffinMan

1

最好是具有在根包彈簧引導應用程序類,並具有在該包下面的封裝結構的所有其他類。你不必擔心部件掃描作爲一個例子

package com.igt.customer; 
import java.util.Arrays; 

import org.springframework.boot.CommandLineRunner; 
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.annotation.Bean; 

@SpringBootApplication 
public class CustomerApplication { 

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

    @Bean 
     public CommandLineRunner commandLineRunner(ApplicationContext ctx) { 
      return args -> { 

       System.out.println("Let's inspect the beans provided by Spring Boot:"); 

       String[] beanNames = ctx.getBeanDefinitionNames(); 
       Arrays.sort(beanNames); 
       for (String beanName : beanNames) { 
        System.out.println(beanName); 
       } 

      }; 
     } 
} 

控制器類

package com.igt.customer.controller; 

import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RestController; 

@RestController 
public class EmployeeController { 
    @RequestMapping("/employee") 
    public String employee() { 
     return "Greetings from Sam!"; 
    } 
} 

運行的應用程序(去你的CMD上應用程序的目錄)

E:\蒙戈DB \新建文件夾\客戶> MVN安裝-U -e

如果細

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 10.686 s 
[INFO] Finished at: 2017-08-16T16:39:57+05:30 
[INFO] Final Memory: 21M/219M 
[INFO] ------------------------------------------------------------------------ 

運行jar文件,你應該可以看到這個到底

E:\ MongoDB的\新文件夾\客戶\目標> Java的罐子客戶0.0.1-SNAPSHOT.jar

訪問應用

http://localhost:8080/employee

通知應用程序名稱沒有在URL需要

P.S我在這裏寫了額外的細節,因爲我已經體驗過,如果你是新建的Spring引導構建和運行應用程序是一個挑戰,在我的應用程序中,我已經創建了一個與Application類具有RequestMapping「/」我漸漸404錯誤,請參考下面的鏈接作爲參考

spring boot application

0

這個問題會如果刪除main.java類的主包簡單地加以解決。

新的結構將是:

/src/main/java 
     Main.java 
     ControllerLayer 
      UsersController.java 
     DataAccessLayer 
      UsersDAL.java 
     ServiceLayer 
      UsersService.java