Spring Boot | localhost:显示8080 404错误页面

时间:2017-04-13 18:20:13

标签: java spring-boot

我创建了一个Spring Boot Maven项目,但是我的RequestMapping以及localhost:8080返回404错误页面。我认为问题在于我的软件包是如何设置的,但我已经尝试过多个问题的解决方案,而且我仍然无法绕过错误页面。你们能指出我如何解决这个问题的正确方向吗?也许我需要在Main类上面添加Component注释?但是我尝试过这个解决方案,错误仍然存​​在。

这是我的包结构:

 /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>

5 个答案:

答案 0 :(得分:2)

发送请求时,应返回响应。在您的情况下,您没有发送任何带有响应的内容,这就是您收到404错误(找不到页面)的原因。

答案 1 :(得分:2)

在main.java中,尝试:

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

您的包名称不应包含项目中的根路径。

答案 2 :(得分:1)

建议在root包中使用spring boot Application类,并将该包中的所有其他类放在该包的下面。你不必担心组件扫描的例子

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:\ MongoDb \ New folder \ customer&gt; mvn install -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 \ New folder \ customer \ target&gt; java -jar customer-0.0.1-SNAPSHOT.jar

访问应用程序

http://localhost:8080/employee

注意网址

中不需要申请名称 PS我已经在这里写了额外的细节,如果你是初次使用Spring引导构建并且运行应用程序是一个挑战,在我的应用程序中,我在与ApplicationMapping的Application类相同的包中创建了一个rest控制器。 #34; /&#34;因为我收到404错误,请参阅以下链接作为参考

spring boot application

答案 3 :(得分:0)

如果删除main.java类的主包,将简单解决此问题。

新结构将是:

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

答案 4 :(得分:0)

在我的Spring引导应用程序中,不需要手动扫描基本软件包,因为所有配置都嵌入在单个注释@SpringBootApplication中。请参阅this link

我不了解基本软件包的初始配置。有人可以解释一下吗?

例如,如果您的基本软件包如下:

com.example.myapp.SpringApplication

...这意味着您的应用程序将基本软件包视为com.example.myapp。因此,如果您可以在Controllers下创建所有ServiceRepositorycom.example.myapp,则可以加载ControllersService,{{ 1}},否则将无法加载。这是因为Repository最初设置了基本包并加载了基本包中的所有Java类。因此,因此,您在浏览器以及springbootapplication中都会遇到404错误。因此,请尝试与基本软件包匹配。