@value注解未解析

62o28rlo  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(330)

我正在创建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>
....

为错误的缩进(大量的复制粘贴)和愚蠢的问题道歉。

mw3dktmi

mw3dktmi1#

原始答案:
这个 @org.springframework.beans.factory.annotation.Value 注解可以在springbeansjar中找到。向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类路径被弄脏了。如果更新类路径(即mvneclipse:eclipse)你的问题应该得到解决。
你还需要旧的spring依赖吗?如果不是的话,最好把它去掉。
顺便说一句,@balajiv是绝对正确的,你不需要显式的依赖关系 spring-beans 因为它会通过 spring-context 附属国。我个人必须承认,如果我对来自特定jar的类有编译时依赖性(在本例中是 Value 类)然后我总是在pom中显式地定义对该jar的依赖,而不是依赖另一个第三方依赖来为我提供它。我知道这是不太可能发生,但如果在未来的版本 spring-context 它们消除了对 spring-beans 当我升级到新版本时,我的模块就不能工作了。

ztmd8pv5

ztmd8pv52#

如果在pom.xml中提到了spring上下文,那么就没有必要在pom.xml中将spring bean作为一个单独的依赖项提到。这将负责下载许多与spring相关的jar,其中一个是springbean,这就是我们需要使用@value注解的地方。
关于您的问题,是@value行上的编译错误还是没有将值注入到您的变量中?我之所以问您这个问题,是因为您的代码片段在我的示例maven项目(在eclipse中)上工作得很好,与您在这里给出的pom.xml相同。

相关问题