2017-10-20 53 views
1

我使用的是具有訪問keycloak的spring引導。我需要離開keycloak配置在keycloak.json文件我想從使用PropertySource註釋的JSON得到TEH值...使用帶有外部JSON文件的@PropertySource的Spring屬性配置

我application.yml

keycloak: 
    configurationFile: "classpath:keycloak.json" 

我keycloak.json

{ 
    "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") 
} 

的問題是,我剛開g null爲此環境變量

+0

運行,把一個斷點env.getProperty,再看看上ENV的財產來源,看看你的有什麼keycloak.json的源代碼作爲起點。 – PaulNUK

+0

[從json文件加載spring-boot屬性]可能的副本(https://stackoverflow.com/questions/44564166/load-spring-boot-properties-from-json-file) – araknoid

+0

我在應用程序中有環境變量.yml這是類路徑:keycloak.json但不是keycloak.json文件的內容 – testeurFou

回答

0

如果env爲空,可能問題與導入有關。

org.springframework.core.env.Environment

否則,如果從環境中查詢爲空值。在春季啓動應用程序,如財產JSON文件的配置是完全不同的,請參閱該Example 1Example 2

0
我知道使用 @Value是贊成 env.getProperty()有些氣餒

,但我發現前者更可靠和直接的。使用@ValuePropertySource的正確方法在mkyong's great tutorial

描述要解決$ {}在@values,你必須註冊XML或註釋 配置文件的靜態 PropertySourcesPlaceholderConfigurer。

+0

我已經嘗試了你對@value所說的話。 @Value(「$ {keycloak.configurationFile}」) private String authServerUrl; 返回 「類路徑:keycloak.json」 \t \t \t @Value( 「$ {auth服務器的URL}」) \t私人字符串authServerUrl; \t春天無法啓動.. – testeurFou

+0

@testeurFou應該 '@PropertySource( 「類路徑:keycloak.json」) 公共MyClass類{ @Value( 「$ {auth服務器的URL}」) 私人字符串authServerUrl ; }' – maaw

+0

@testeur我也不知道'@ Controller'和'@ Configuration'在同一個文件中。至少(假設它有效)建議將它們分開。 – maaw

相關問題