java - 使用 gradle 设置休息服务

标签 java rest gradle

我第一次尝试使用 gradle,但在创建一个可以处理的简单项目框架时遇到困难。

Project Structure

这是我的 build.gradle 内容

    buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.2.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'war'

bootJar {
    baseName = 'backend'
    version '1.0-SNAPSHOT'
}
war{
    baseName = 'api'
}

repositories {
    mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

使用以下命令一切都可以正常构建并运行良好

gradle clean build

gradle bootRun

但是,我没有看到任何可以使用的上下文路径

2018-05-27 20:32:27.107  INFO 8049 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-05-27 20:32:27.108  INFO 8049 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2018-05-27 20:32:27.129  INFO 8049 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-05-27 20:32:27.129  INFO 8049 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-05-27 20:32:27.231  INFO 8049 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2018-05-27 20:32:27.271  INFO 8049 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2018-05-27 20:32:27.275  INFO 8049 --- [           main] com.initiator.Application                : Started Application in 1.976 seconds (JVM running for 2.342)
2018-05-27 20:32:41.119  INFO 8049 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
2018-05-27 20:32:41.119  INFO 8049 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2018-05-27 20:32:41.133  INFO 8049 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 14 ms

我尝试了以下网址

http://localhost:8080/
http://localhost:8080/api
http://localhost:8080/api/greeting

他们都不起作用,但我得到了

    Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

知道我在这里做错了什么吗?

最佳答案

Spring Boot 默认会扫描您的 Application 类及其子包的包中的注释。在您的代码结构概述中,您的应用程序似乎位于 com.initiator 中,实体和 Controller 位于 com.controllercom.entity 中>。当您仅使用 @SpringBootApplication 注释主类时,不会使用默认行为扫描这两个包中的实体或 Controller 。

你有两种可能性:

  1. 使您的实体和 Controller 包成为 Application 类的子包。
  2. 指定 scanBasePackages 属性以包含 Controller 和实体包,这些包不是应用程序类的子包,例如@SpringBootApplication(scanBasePackages = { "com.entity", "com.controller"})

我建议坚持使用第一个选项并坚持默认行为(对您而言减少工作量,让其他人清楚在哪里搜索带注释的类)。

关于java - 使用 gradle 设置休息服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50555862/

相关文章:

java - 如何使用 XSL 排列数据

java - 在Web服务API中传递参数

java - 使用gradle构建一个非常简单的java程序

java - Realm findAllSorted by field of a filed

java - 使用 Java 访问 OBIEE 演示服务器 URL

java - 如何使用 Spring Data REST 存储库创建和连接相关资源?

gradle - 包括具有相同插件依赖项的第 3 方子项目

android - 为什么在Android Studio上发生 “Unable to pre-dex - Error while signing the application”错误?

java - 如何在 Java 中为 exec 方法的参数指定文件夹?

python - obj_create 无法在 tastypie 中工作