java - @Value 注解未解析

标签 java spring maven annotations javabeans

我正在创建一个示例项目,如 MKyong's tutorial. 中所述我正在使用 eclipse 。当我创建项目时,我找不到任何方法来编写 @Value 注释。

我知道这看起来很愚蠢,但我根本无法解决这个问题。你能帮忙吗?

...
import org.springframework.beans.factory.annotation.*;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

@Component ("newSession")
public class Session implements DisposableBean, InitializingBean {

    @Value ("3232")
    private int id;
...

pom.xml:

...
<properties>
    <spring.version>3.0.5.RELEASE</spring.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring</artifactId>
        <version>2.5.6</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <!-- Spring 3 dependencies -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
</dependencies>
....

对于错误的缩进(大量复制粘贴)和愚蠢的问题表示歉意。

最佳答案

原答案:

@org.springframework.beans.factory.annotation.Value 注释可以在 spring-beans jar 中找到。将以下依赖项添加到您的 pom 应该可以解决问题:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${spring.version}</version>
</dependency>

更新:

我相信这个问题只是一个类路径问题。依赖org.springframework:spring:2.5.6,也有包org.springframework.beans.factory.annotation,但没有Value 注释类。我的假设是 eclipse 类路径被搞砸了。如果您更新类路径(即 mvn eclipse:eclipse),您的问题应该得到解决。

您还需要旧的 Spring 依赖项吗?如果没有,那么最好将其删除。

顺便说一句,@BalajiV 是绝对正确的,您不需要显式依赖 spring-beans,因为它将通过 spring-context 暂时拉入依赖。必须承认,如果我个人对特定 jar 中的类(在本例中为 Value 类)具有编译时依赖性,那么我总是在我的 pom 中明确定义对该 jar 的依赖性而不是依赖在另一个第三方依赖项上为我提供它。我知道这不太可能发生,但如果在 spring-context 的 future 版本中他们删除了对 spring-beans 的依赖,那么当我升级到较新的版本。

关于java - @Value 注解未解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16954688/

相关文章:

java - 如何使用 Java Print API 打印 HTML 而不是代码?

Java Swing 按钮: setColor doesn't display the right color

spring - 在 Spring 中对下载的文件进行编码

java - 我如何告诉我的数据库某些更改是由 hibernate 而不是其他应用程序进行的?

java - 如何在 Maven POM 中处理第 3 方 JAR 和远程存储库?

java - 连接到 VPN 时,Maven 从发布 URL 下载快照

eclipse - 打包前在 Maven 中执行任务

java - 程序占用了我的所有资源并且未完成(可能是无限循环?)

java - 将方法应用于流

Spring Boot-每个配置文件多个属性文件