当前位置: 首页 > 知识库问答 >
问题:

IntelliJ spring Gradle项目注释不工作

苏野
2023-03-14

因此,我试图在IntelliJ中使用项目配置设置中的spring选项启动一个新的web项目,但当我最终获得项目设置时,似乎我创建的任何新控制器都被忽略了,即使我对它们进行了注释。@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.7
targetCompatibility = 1.7

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("junit:junit")
    testCompile "org.mockito:mockito-core:1.+"
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.3'
}

是否有某种配置文件我必须填写,告诉项目在哪里寻找控制器,还是pixie dust没有像我期望的那样工作?

下面是我的控制器的样子:

@RestController
public 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注释的类:

@SpringBootApplication
public 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实例运行。

谢谢大家!

共有1个答案

施永宁
2023-03-14

如果在Tomcat中部署应用程序,则必须创建一个扩展SpringBootServletInitializer的类来启动spring容器。只有在使用Java-jar yourfile.jar运行带有嵌入式Tomcat(默认情况下spring boot Starter Web包含)的jar/war时,才会调用带有main方法的应用程序类。

请参阅文档:http://docs.spring.io/spring-boot/docs/1.2.3.release/reference/htmlsingle/#howto-create-a-deployable-war-file

 类似资料:
  • 我正在尝试在数据库中保存对象。正在执行代码并创建实体的Id,但实体未持久化到数据库(未插入行): 从三行(beginTransation,flush,commit)中删除注释解决了问题,但是为什么注释在这里不起作用呢? spring XML: POM xml文件:

  • 我在玩和 这是我的应用程序上下文文件 以下是我的Java类 HelloWorld1。JAVA 住址JAVA 这里是我尝试运行东西的地方-应用程序。JAVA 我一直在得到这个异常-理想情况下我不应该,因为我已经定义了id为'address1'的@Qualifier注释-所以它不应该抛出异常 警告:上下文初始化过程中遇到的异常-取消刷新尝试:org.springframework.beans.fact

  • 有人知道如何在Android项目中启用Eclipse中的注释处理吗?我做了以下工作: 使用处理器和META-INF创建Java项目 如果我从文件夹中删除jar文件,Eclipse会报告项目中的错误,因为找不到注释处理器。但是,如果处理器就位并且配置了Eclipse,则不会进行处理 如果我在标准Java项目中使用相同的处理器,它就可以正常工作<有人能帮我吗?谢谢

  • 我的spring应用程序有点小问题。下面是我的代码: (存储库) 下面是我的简单服务类: 更新:配置

  • 我将Spring 3.2.4与JavaFX结合使用,并希望实现一种方法,其中操作将在事务中执行。我在控制器中的代码如下所示: 以及我的应用程序上下文: 尝试运行时,我收到以下错误消息: 该方法存在。删除注释,或者将方法从public更改为private,或者从配置中删除bean,程序就会运行,但事务注释根本不起作用。删除代理目标会导致另一个错误。