我创建了一个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>
答案 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错误,请参阅以下链接作为参考答案 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
下创建所有Service
,Repository
,com.example.myapp
,则可以加载Controllers
,Service
,{{ 1}},否则将无法加载。这是因为Repository
最初设置了基本包并加载了基本包中的所有Java类。因此,因此,您在浏览器以及springbootapplication
中都会遇到404
错误。因此,请尝试与基本软件包匹配。