获得百里香的春季应用环境

时间:2014-05-17 12:47:52

标签: spring environment spring-boot thymeleaf

我的Spring Boot应用程序运行3个配置:

  • application.properties - >用于开发环境
  • application-test.properties - >用于测试环境
  • application-production.properties - >适用于生产环境

应用程序运行时如何进入百里香叶环境?

我只需要在生产环境中包含Google Analytics代码。

2 个答案:

答案 0 :(得分:37)

如果您一次只有一个配置文件处于活动状态,则可以执行以下操作。

<div th:if="${@environment.getActiveProfiles()[0] == 'production'}">
  This is the production profile - do whatever you want in here
</div>

上面的代码基于以下事实:Thymeleaf的Spring方言允许您使用@符号访问bean。当然,Environment对象始终可用作Spring bean。

另请注意,Environment的方法getActiveProfiles()返回一个字符串数组(这就是我的答案中使用[0]的原因),我们可以使用标准的Spring EL调用它。 / p>

如果一次有多个配置文件处于活动状态,则更强大的解决方案是使用Thymeleaf的#arrays实用程序对象来检查字符串production是否存在活动配置文件。那种情况下的代码是:

<div th:if="${#arrays.contains(@environment.getActiveProfiles(),'production')}">
     This is the production profile
</div>

答案 1 :(得分:1)

只需添加此类即可为视图设置全局变量:

<!DOCTYPE html>
<html>
<head>
    <title> :one to one : </title>
</head>
<body>

@foreach ($customers as $customer)
<h1>{{$customer->name}}</h1>

<h1>{{implode(',',$customer->passport->pluck("number")->toArray())}}</h1>
  @endforeach

</body>
</html>

然后在百里香叶文件中使用@ControllerAdvice public class BuildPropertiesController { @Autowired private Environment env; @ModelAttribute("isProd") public boolean isProd() { return Arrays.asList(env.getActiveProfiles()).contains("production"); } } 变量:

${isProd}

或者您可以将活动配置文件名称设置为全局变量:

<div th:if="${isProd}">
     This is the production profile
</div>

然后在百里香叶文件中使用@ControllerAdvice public class BuildPropertiesController { @Autowired private Environment env; @ModelAttribute("profile") public String activeProfile() { return env.getActiveProfiles()[0]; } } 变量(如果您有一个有效的配置文件):

${profile}