2017-04-13 108 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