2017-10-20 6 views
1

私はkeycloakにアクセスできるSpringブートを使用しています。私は私のapplication.ymlは外部のJSONファイルで@PropertySourceを使用するSpringプロパティの設定

マイkeycloak.json

keycloak: 
    configurationFile: "classpath:keycloak.json" 

...私はPropertySourceアノテーションを使用して、JSONからtehの値を取得したいと思いkeycloak.jsonファイルにkeycloak構成を残しておく必要があります

{ 
    "realm": "MyRealm", 
    "auth-server-url": "https://keycloakURL", 
.... 
} 

私のクラス

@Controller 
@Configuration 
@PropertySource("classpath:keycloak.json") 
public class MyClass{ 

@Autowired 
private Environment env; 

@RequestMapping(value = "/mycontroller", method = RequestMethod.GET) 
    public String method(Model model) { 
    env.getProperty("auth-server-url") 
} 

問題は、私はのgettinだということですこの環境変数の場合はnull null

+0

実行のためのチケットを持っている、env.getPropertyにブレークポイントを入れて、その後のenvのプロパティソースを見て、あなたが何かを持っているかどうかを確認keycloak.jsonのソースを開始点として使用します。 – PaulNUK

+0

[jsonファイルからのスプリングブートプロパティのロード]の可能な複製(https://stackoverflow.com/questions/44564166/load-spring-boot-properties-from-json-file) – araknoid

+0

私はアプリケーションに環境変数を持っています.ymlはclasspath:keycloak.jsonですが、keycloak.jsonファイルの内容ではありません – testeurFou

答えて

0

envがnullの場合は、インポートに問題がある可能性があります。

org.springframework.core.env.Environment

エルス

環境から照会値が空の場合。春のブートアプリケーションでは、プロパティとしてJSONファイルの構成はかなり異なっている、私が知っているExample 1Example 2

0

を参照してください@Valueを使用すると、ややenv.getProperty()の賛成で落胆が、私はかつて多くの、より信頼性の高い、まっすぐ前方を発見されました。 PropertySourceから@Valueを使用する適切な方法は、あなたがXMLまたは注釈 設定ファイルのいずれかで静的 PropertySourcesPlaceholderConfigurerを登録する必要があり、@valuesで$ {}を解決するにはmkyong's great tutorial

に記載されています。

+0

@valueについてあなたが言ったことを試しました。 @Value( "$ {keycloak.configurationFile}") プライベート文字列authServerUrl; 戻り、 "クラスパス:keycloak.json" \t \t \t @value( "$ {認証サーバー-URL}") \tプライベート文字列authServerUrl。 ( ":keycloak.jsonクラスパス") 公共MyClassクラス{ @value( "$ {認証サーバー-URL}") プライベート文字列authServerUrlそれは '@PropertySourceでなければなりません@testeurFou \t春は文句を言わない – testeurFou

+0

..開始します; } ' – maaw

+0

@testeurFou私は同じファイルで' @ Controller'と '@ Configuration'について知りません。少なくとも、(動作すると仮定して)それらを分離しておくことをお勧めします。 – maaw

関連する問題