我正在创建mkyong教程中提到的一个示例项目。我正在使用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>
....
为错误的缩进(大量的复制粘贴)和愚蠢的问题道歉。
2条答案
按热度按时间mw3dktmi1#
原始答案:
这个
@org.springframework.beans.factory.annotation.Value
注解可以在springbeansjar中找到。向pom添加以下依赖项可以解决此问题:更新:
我相信这个问题只是一个类路径问题。依赖关系
org.springframework:spring:2.5.6
,还有包裹org.springframework.beans.factory.annotation
,但没有Value
注解类。我的假设是eclipse类路径被弄脏了。如果更新类路径(即mvneclipse:eclipse)你的问题应该得到解决。你还需要旧的spring依赖吗?如果不是的话,最好把它去掉。
顺便说一句,@balajiv是绝对正确的,你不需要显式的依赖关系
spring-beans
因为它会通过spring-context
附属国。我个人必须承认,如果我对来自特定jar的类有编译时依赖性(在本例中是Value
类)然后我总是在pom中显式地定义对该jar的依赖,而不是依赖另一个第三方依赖来为我提供它。我知道这是不太可能发生,但如果在未来的版本spring-context
它们消除了对spring-beans
当我升级到新版本时,我的模块就不能工作了。ztmd8pv52#
如果在pom.xml中提到了spring上下文,那么就没有必要在pom.xml中将spring bean作为一个单独的依赖项提到。这将负责下载许多与spring相关的jar,其中一个是springbean,这就是我们需要使用@value注解的地方。
关于您的问题,是@value行上的编译错误还是没有将值注入到您的变量中?我之所以问您这个问题,是因为您的代码片段在我的示例maven项目(在eclipse中)上工作得很好,与您在这里给出的pom.xml相同。