0

SO に関するこの記事を読んで、明確な質問がいくつかありました。

config.properties を src/main/resources の下に置きました

spring-servlet.xml config file

以下を追加しました。

<context:property-placeholder location="classpath:config.properties"/>

私のビジネスレイヤーでは、経由でアクセスしようとしています

@Value("${upload.file.path}")
private String uploadFilePath;

Eclipse はエラーを示します:

The attribute value is undefined for the annotation type Value

ビジネス レイヤでプロパティにアクセスできませんか、それともプロパティ ファイルはコントローラでのみ読み取られますか?

更新:: src/main/java/com.companyname.controllers/homecontroller.java

public String home(Locale locale, Model model) {
    MyServiceObject myObj = new MyServiceObject();
    System.out.println("Property from my service object: = " + myObj.PropertyValue());

    if(myObj.PerformService())
    {
      ///
    }
}

src/main/java/com.companyname.services/MyService.java

public class MyServiceObject {

    @Value("${db.server.ip}")
    private String _dbServerIP;


    public String PropertyValue() {

        return _dbServerIPaseURL;
    }



}

説明を見つけた別のサイト

4

2 に答える 2

0

org.springframework.beans.factory.annotationパッケージからValueをインポートすることを確認してください。

import org.springframework.beans.factory.annotation.Value;

また、プロパティプレースホルダーは、それぞれのコンテキスト構成ファイルで宣言する必要があります。コントローラーの場合は、Springディスパッチャーサーブレット構成ファイルである可能性があります。

updateドル記号を含むBean値を、ハッシュ記号を含む値を処理するSpring式言語コンテナ拡張property-placeholderで後処理することを混乱させています。後者のアプローチが使用されていることを示したリンクで。${<property name>}#{<Spring expression language expression>}

MyServiceObject myObjのインスタンス化に関して オブジェクトをSpringで管理する場合は、その作成をコンテナーに委任する必要があります。

  • がステートレスサービスの場合MyServiceObject、それはシングルトンBeanスコープを持つシングルトンです。たとえば、次のxml構成を使用して、アプリケーションコンテキストに登録する必要があります。

    <bean class="my.package.MyServiceObject"/>
    

    そしてそれをあなたのコントローラーに注入します:

    private MyServiceObject myServiceObject;
    @Autowired 
    public void setMyServiceObject(MyServiceObject myServiceObject){
       this.myServiceObject = myServiceObject;
    }
    
  • のインスタンスが多数MyServiceObject必要な場合は、他の(シングルトンではない)Beanスコープ(プロトタイプ、リクエストなど)を使用してBeanとして宣言できます。ただし、コントローラーのインスタンスは1つしかないため、フィールドが1つだけでクラスのインスタンスが多数あるため、SpringコンテナーにMyServiceObjectインスタンスをコントローラーフィールドに自動配線させることはできません。MyServiceObjectこの問題を解決するためのさまざまなアプローチ(さまざまなBeanスコープ)については、ドキュメントのそれぞれのセクションで読むことができます。

于 2012-11-16T16:59:47.603 に答える