Java RESTWebService使用SpringBoot和jersey。错误:应用程序初始化期间,应用程序资源模型的验证失败
下面我将在Spring boot应用程序中使用Jersey创建REST web服务: 我在初始化时出错。我想不出是什么 当我输入时: 我得到这个错误: 此应用程序没有/error的显式映射,因此您可以看到 这是一种退路 2017年4月20日星期四12:57:24 WAT出现意外错误 (类型=内部服务器错误,状态=500)。验证 应用程序资源模型在应用程序期间失败 初始化。[[FATAL]未找到参数为的注入源 键入publicjavax.ws.rs.core.Response com.first.rest.test.controller.BookController.updateBook(java.lang.String,com.first.rest.test.model.Book) 在索引0处;source='ResourceMethod{httpMethod=PUT, consumedTypes=[application/json],producedTypes=[],suspended=false, suspendTimeout=0,suspendTimeoutUnit=毫秒, invocable=invocable{handler=ClassBasedMethodHandler{handlerClass=class com.first.rest.test.controller.BookController, handlerConstructors=[org.glassfish.jersey.server.model。HandlerConstructor@642e8d2e]}, definitionMethod=public javax.ws.rs.core.Response com.first.rest.test.controller.BookController.updateBook(java.lang.String,com.first.rest.test.model.Book), parameters=[Parameter[type=class java.lang.String,source=oid, defaultValue=null],参数[type=class] com.first.rest.test.model.Book,source=null,defaultValue=null]], responseType=classjavax.ws.rs.core.Response},nameBindings=[]}'] 控制台里有这个 servlet com.first.rest.test.jersey配置Java RESTWebService使用SpringBoot和jersey。错误:应用程序初始化期间,应用程序资源模型的验证失败,java,web-services,rest,maven,jersey,Java,Web Services,Rest,Maven,Jersey,下面我将在Spring boot应用程序中使用Jersey创建REST web服务: 我在初始化时出错。我想不出是什么 当我输入时: 我得到这个错误: 此应用程序没有/error的显式映射,因此您可以看到 这是一种退路 2017年4月20日星期四12:57:24 WAT出现意外错误 (类型=内部服务器错误,状态=500)。验证 应用程序资源模型在应用程序期间失败 初始化。[[FATAL]未找到参数为的注入源 键入publicjavax.ws.rs.core.Response com.first
org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during
应用程序初始化。
[[FATAL]未找到public javax.ws.rs.core.Response类型参数的注入源
项目结构为:
课程:
主要应用程序类别:
@SpringBootApplication
public class FirstRestApplication {
public static void main(String[] args) {
SpringApplication.run(FirstRestApplication.class, args);
}
Jersey配置类:
@Configuration
@ApplicationPath("rest")
public class JerseyConfiguration extends ResourceConfig {
public JerseyConfiguration() {
}
@PostConstruct
public void setUp() {
register(BookController.class);
register(GenericExceptionMapper.class);
}
}
图书管理员类:
@Component
@Path("/books")
public class BookController {
private BookService bookService;
public BookController(BookService bookService) {
this.bookService = bookService;
}
@GET
@Produces("application/json")
public Collection<Book> getAllBooks() {
return bookService.getAllBooks();
}
@GET
@Produces("application/json")
@Path("/{oid}")
public Book getBook(@PathParam("oid") String oid) {
return bookService.getBook(oid);
}
@POST
@Produces("application/json")
@Consumes("application/json")
public Response addBook(Book book) {
bookService.addBook(book);
return Response.created(URI.create("/" + book.getOid())).build();
}
@PUT
@Consumes("application/json")
@Path("/{oid}")
public Response updateBook(@PathParam("oid") String oid, Book book) {
bookService.updateBook(oid, book);
return Response.noContent().build();
}
@DELETE
@Path("/{oid}")
public Response deleteBook(@PathParam("oid") String oid) {
bookService.deleteBook(oid);
return Response.ok().build();
}
pom.xml
<?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.first.rest.test</groupId>
<artifactId>firstrest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>first rest</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.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>
</properties>
<dependencies>
<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-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.0.0
com.first.rest.test
首先
0.0.1-快照
罐子
第一个休息
SpringBoot的演示项目
org.springframework.boot
spring启动程序父级
1.5.2.1发布
UTF-8
UTF-8
1.8
org.springframework.boot
弹簧起动试验
测试
org.springframework.boot
春靴起跑服
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
springbootmaven插件
我看到一个问题,但它与错误无关。如果希望注入构造函数,则需要@Autowired
或@Inject
注入构造函数。错误是说问题在于updateBook
方法;无法为请求注入字符串参数。我能看到这种情况的唯一方法是ng是如果@PathParam
注释不是javax.ws.rs.PathParam
。我见过有人不小心导入了javax.websocket.server.PathParam
,但我在你的项目中没有看到这种依赖关系。我发现我也不小心使用了它!我会更正它并查看。谢谢。我对第一句话的理解也是错误的。Y根据,你不需要@Autowired
。每天学习一些新东西:-)@peeskillet我现在使用jax-rs提供的code
@PathParamcode
。导入软件包时需要有人注意!:)我花了很多时间寻找原因!
public class Book {
private String oid;
private String name;
private String author;
private Category category;
public Book() {
}
public Book(String oid, String name, String author, Category category) {
super();
this.oid = oid;
this.name = name;
this.author = author;
this.category = category;
}
public String getOid() {
return oid;
}
//more code
}
<?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.first.rest.test</groupId>
<artifactId>firstrest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>first rest</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.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>
</properties>
<dependencies>
<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-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>