gpt4 book ai didi

java - IntelliJ Spring Gradle 项目注释不起作用

转载 作者:行者123 更新时间:2023-12-01 11:42:43 24 4
gpt4 key购买 nike

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

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

buildscript {    repositories {        mavenCentral()    }    dependencies {        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.2.RELEASE")    }}apply plugin: 'java'apply plugin: 'eclipse'apply plugin: 'idea'apply plugin: 'spring-boot'sourceSets {    main {        java {            srcDirs = ['src/main/java']        }    }    test {        java {            srcDirs = ['src/main/test']        }    }}jar {    baseName = 'gs-rest-service'    version =  '0.1.0'}repositories {    mavenCentral()}sourceCompatibility = 1.7targetCompatibility = 1.7dependencies {    compile("org.springframework.boot:spring-boot-starter-web")    testCompile("junit:junit")    testCompile "org.mockito:mockito-core:1.+"}task wrapper(type: Wrapper) {    gradleVersion = '2.3'}

我是否需要填写某种配置文件来告诉项目在哪里寻找 Controller ,或者 Sprite 灰尘没有像我期望的那样工作?

这是我的 Controller 的样子:

@RestControllerpublic class GreetingController {    public static final String greeting = "Hello, %s!";    private final AtomicLong counter = new AtomicLong();    @RequestMapping("/greeting")    public Greeting greeting(@RequestParam(value="name", defaultValue = "World") String name){        return new Greeting(counter.incrementAndGet(), String.format(greeting, name));    }}

以及用@SpringBootApplication注释的类:

@SpringBootApplicationpublic class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}

我的文件夹结构:

Test- .gradle- .idea- build- gradle- out- src  - main    - java      - controllers        - Application.java        - GreetingController.java    - test- web  - WEB-INF    - (empty)

此时我对 Spring 的工作原理感到非常困惑,因为注释还没有发挥作用。我缺少配置文件吗? Spring 入门教程说我不需要,但也许是因为我正在使用 IntelliJ。

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

谢谢大家!

最佳答案

如果您在 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

关于java - IntelliJ Spring Gradle 项目注释不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29397008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com