使用带有外部JSON文件的@PropertySource进行Spring属性配置

时间:2017-10-20 10:56:20

标签: java json spring spring-mvc spring-boot

我正在使用弹簧靴,可以访问keycloak。我需要将keycloak配置保留在keycloak.json文件中我想使用PropertySource注释从json获取值...

我的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")
}

问题是我为这个环境变量

得到了null

3 个答案:

答案 0 :(得分:0)

如果env为null,可能是导入问题。

  

org.springframework.core.env.Environment

否则,如果从环境中查询的值为空。在Spring启动应用程序中,JSON文件作为属性的配置完全不同,请参考Example 1Example 2

答案 1 :(得分:0)

我知道使用@Value有点劝阻env.getProperty(),但我发现前者更加可靠和直接。在mkyong's great tutorial

中描述了使用@Value PropertySource的正确方法
  

要在@Values中解析$ {},您必须注册静态   XML或注释中的PropertySourcesPlaceholderConfigurer   配置文件。

答案 2 :(得分:0)

现在不可能,但我们有一张票https://issues.jboss.org/browse/KEYCLOAK-4942