IntelliJ Spring Gradle 项目注释不起作用

Posted

技术标签:

【中文标题】IntelliJ Spring Gradle 项目注释不起作用【英文标题】:IntelliJ Spring Gradle Project Annotations Not Working 【发布时间】:2015-06-06 11:12:29 【问题描述】:

所以我试图在 IntelliJ 中使用项目配置设置中的 Spring 选项启动一个新的 Web 项目,但是当我最终获得项目设置时,似乎我制作的任何新控制器都被忽略了,即使我注释了他们。 @RequestMapping 似乎永远不会被映射。我能够访问的只是位于 web 目录根目录中的文件。

在无法让它工作后,我切换到 Gradle,以便导入一些额外的库来测试我的项目。我的 gradle 文件如下所示:

构建脚本 存储库 mavenCentral() 依赖 类路径(“org.springframework.boot:spring-boot-gradle-plugin:1.2.2.RELEASE”) 应用插件:'java' 应用插件:'eclipse' 应用插件:“想法” 应用插件:'spring-boot' 源集 主要的 爪哇 srcDirs = ['src/main/java'] 测试 爪哇 srcDirs = ['src/main/test'] 罐子 baseName = 'gs-rest-service' 版本 = '0.1.0' 存储库 mavenCentral() 源兼容性 = 1.7 目标兼容性 = 1.7 依赖 编译(“org.springframework.boot:spring-boot-starter-web”) testCompile("junit:junit") 测试编译“org.mockito:mockito-core:1.+” 任务包装器(类型:包装器) gradleVersion = '2.3'

我是否必须填写某种配置文件来告诉项目在哪里寻找控制器,或者精灵之尘没有像我预期的那样工作?

这是我的控制器的样子:

@RestController 公共类 GreetingController public static final String greeting = "Hello, %s!"; 私人最终 AtomicLong 计数器 = new AtomicLong(); @RequestMapping("/问候") public Greeting greeting(@RequestParam(value="name", defaultValue = "World") String name) return new Greeting(counter.incrementAndGet(), String.format(greeting, name));

还有用@SpringBootApplication注解的类:

@SpringBootApplication 公共类应用程序 公共静态无效主要(字符串[]参数) SpringApplication.run(Application.class, args);

还有我的文件夹结构:

测试 - .gradle - 。主意 - 建造 - 毕业 - 出去 - 源代码 - 主要的 - 爪哇 - 控制器 - 应用程序.java - GreetingController.java - 测试 - 网络 - 网络信息 - (空的)

我现在对 Spring 的工作方式感到非常困惑,因为注释还没有发挥作用。我是否缺少配置文件? Spring 入门教程说我不需要,但可能是因为我使用的是 IntelliJ。

最后要注意的是,我正在使用本地 Tomcat 实例运行。

谢谢大家!

【问题讨论】:

【参考方案1】:

如果您将应用程序部署在 Tomcat 中,那么您必须创建一个扩展 SpringBootServletInitializer 的类来启动 Spring 容器。仅当您使用 java -jar yourfile.jar 和嵌入式 Tomcat(默认情况下包含在 Spring Boot Starter Web 中)运行 JAR/WAR 时,才会调用具有 main 方法的 Application 类。

查看文档:http://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/htmlsingle/#howto-create-a-deployable-war-file

【讨论】:

你是救生员。一旦我扩展了文档中提到的类,它就可以工作并在日志中显示 Spring 启动信息。

以上是关于IntelliJ Spring Gradle 项目注释不起作用的主要内容,如果未能解决你的问题,请参考以下文章

intellij idea 2017 gradle构建spring-boot web项目

使用 Groovy、IntelliJ 和 Gradle 在项目中“重新运行 Spring Boot 配置注释处理器”

导入eclipse gradle spring boot项目后,Lombok无法在intellij idea 18.1版本中工作

带有 Intellij 的 Gradle 6 - 刷新失败

带有 QueryDSL 和 Gradle 的 IntelliJ 15

Intellij idea thymeleaf 在 spring boot 项目中完成