我正在创建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>
....
为不良缩进(大量复制粘贴)和愚蠢的问题道歉。
答案 0 :(得分:3)
原始答案:
可以在spring-beans jar中找到@org.springframework.beans.factory.annotation.Value
注释。将以下依赖项添加到您的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
的未来版本中,他们将依赖关系移除到spring-beans
,那么当我升级到更新版本时,我的模块将不再有效。
答案 1 :(得分:0)
如果我们有弹簧 - 将 spring-beans 作为 pom.xml 中的单独依赖项提及 <上下文在其中提到。这将负责下载许多与春天相关的罐子,其中一个是 spring-beans ,这是我们需要使用 @Value 注释。
关于你的问题,它是@Value行的编译错误还是没有注入你的变量的值?我问你这个问题,因为你的代码片段在eclipse中我的示例maven项目上运行正常,你使用的是同一个pom.xml。