2016-10-02 16 views
2

私はスプリングブートでコーディングしています。他のパッケージのproperties.propertiesの価値を成功させようとしました。クラッセClassUtils.javaの例では、ここでtestValueの値は常にスプリングブートアプリケーションでプロパティの値を取得できません

nullです。これは

enter image description here

私のプロジェクトであるこれは私のコードです:

package com.plugins.controller; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Value; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.ResponseBody; 
import org.springframework.web.bind.annotation.RestController; 

import com.plugins.domain.ClassUtils; 

@RestController 
public class SearchContactController { 
    @Value("${environnement.test}") 
    String testValue; 

    @Value("${environnement.url}") 
    String urlValue; 

    @RequestMapping(value = "/test") 
    public String pingRequest() { 
     System.out.println("value ===> " + testValue + " /// " + urlValue); 

     return "test !" + ClassUtils.getTestValue(); 
    } 

} 

これは私の第二のクラスですここでは、私はtestValue変数の値を取得できません:

package com.plugins.domain; 

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

@Component 
public class ClassUtils { 

    @Value("${environnement.test}") 
    static String testValue; 


    public static String getTestValue(){ 
     return "The return "+testValue;  
    } 
} 

これは私springApp.javaある

package com.plugins; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 

@SpringBootApplication 
public class SpringBootVideApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(SpringBootVideApplication.class, args); 
    } 
} 
+0

どちらのクラスは 'ConfigurationProperties' @であり、したがってどちらが得るある他のクラスのメソッドを使用するクラスに@Autowiredアドインによってこの問題を解決しますおそらくあなたが探している "リラックスした束縛"です。個別の '@ConfigurationProperties'クラスを作成して、情報を保持して注入します。 – chrylis

+0

ところで、あなたは繰り返しプロパティ名に 'environment'をミスタイプしました。それは技術的な問題ではありませんが、原因としてそれを排除することを指摘したいと思います。 – Bloodysock

答えて

1

出願、({ "com.plugins"})@ComponentScanを有効

application.properties

myapp.url="xxxxxx" 
で定義されたプロパティにアクセスします

クラス内

@Value("${myapp.url}") 
private String testValue; 

これは静的変数ではありません。静的変数の場合、setterメソッドを定義して、このようなハッキングを行います。

private static String testValue;

@Value("${myapp.url}") 
public void testValue(String value) { 
      testValue = value; 
} 
+0

私はあなたの解決策を試してみます。他のクラス 'ClassUtils.java' –

0

私は、これはスニペット

// Class: SearchContactController.java 
@Autowired 
    ClassUtils cd; 

    @RequestMapping(value = "/ping") 
    public String pingRequest() { 
     return "Ping OK !" + cd.getTestValue(); 
    } 
関連する問題