我正在创建一个示例项目,如 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/