我的Spring Boot应用程序运行3个配置:
应用程序运行时如何进入百里香叶环境?
我只需要在生产环境中包含Google Analytics代码。
答案 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}