3

MKyong のチュートリアルで説明されているように、サンプル プロジェクトを作成しています。エクリプスを使用しています。@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>
....

悪いインデント (たくさんのコピーと貼り付け) とばかげた質問をお詫びします。

4

2 に答える 2

4

元の回答:

注釈は@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依存関係が削除spring-beansされた場合、新しいバージョンにアップグレードしたときにモジュールが機能しなくなります。

于 2013-06-06T07:18:22.440 に答える
0

spring-contextが言及されている場合、 pom.xmlで別の依存関係として言及されているspring-beansを持つ必要はありません。これにより、Spring 関連の多くの jar がダウンロードされます。そのうちの 1 つは、 @Valueアノテーションを使用するために必要なspring-beansです。

あなたの問題に関しては、 @Value 行のコンパイル エラーですか、それとも変数に値が挿入されていませんか? ここで指定したのと同じ pom.xml を使用して、Eclipse のサンプル Maven プロジェクトでコード スニペットが正常に動作するため、この質問をしています。

于 2013-06-06T07:39:48.900 に答える