使用spring-boot在我的项目中找不到@Autowired

时间:2017-10-23 06:26:09

标签: java spring-mvc spring-boot intellij-idea

我的问题描述

我正在尝试在@RestController中使用@Autowired,但在我的项目中找不到@Autowired。我正在关注它Building REST services with Spring

  1. 我忘了把什么放在我的pom.xml中?
  2. 我写过它是因为我没有看到关于@Autowired DI的任何类似内容。

    的pom.xml

    我的带有spring-boot的pom.xml,我的@Autowired在我的项目中找不到。

    我忘了把什么放在我的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.kenny</groupId>
        <artifactId>gsbookmarks</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.8.RELEASE</version>
        </parent>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-rest</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
        <repositories>
            <repository>
                <id>spring-releases</id>
                <url>https://repo.spring.io/libs-release</url>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>spring-releases</id>
                <url>https://repo.spring.io/libs-release</url>
            </pluginRepository>
        </pluginRepositories>
    

    我的RestController That is my @RestController and the @Autowired isn't found!

    没有导入@Autowired,为什么? I don't have import to @Autowired. Why?

2 个答案:

答案 0 :(得分:3)

@Autowired是spring-beans-XXX.jar的一部分。 spring-boot-starter将具有spring-beans作为transnsitive dependancy。所以spring-beans * .jar必须在你的类路径中。这似乎是IDE的一些问题。

  1. 尝试重新启动IDE。如果您使用的是Intellij,请选择以下选项 - 文件 - &gt;无效缓存/重新启动。

  2. 首先尝试构建项目,以便下载所有jar并在类路径中可用。

  3. 尝试在类路径中手动添加spring-beans * .jar,如果以上都不起作用。

答案 1 :(得分:1)

我不知道Spring Boot,但你在import org.springframework.beans.factory.annotation.Autowired;

下面试了一下
<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>your release version</version>
</dependency>