設定する方法はあるけれど、取得する方法ってなんだっけ
SpringBootには、設定内容を実行環境ごとに切り替えるプロファイル機能があります。
特定のプロファイルが有効なときだけ機能させるアノテーション @Profile
がありますが、現在有効なプロファイルってどれだっけ…?を取得するには、org.springframework.core.env.Environment
を使います。
- SpringのApplicationContextからEnvironmentを取得する
- Springの管理下にあるBeanならEnvironmentは
@Autowired
ですぐに参照できる
利用例
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Controller
@RequestMapping("/")
@AllArgsConstructor
@Slf4j
public class SampleController {
Environment environment; // これでっす(・ω・)
@GetMapping("")
public ModelAndView display(ModelAndView mnv) {
// Profileは複数指定が可能なので、String[]になる
String[] activeProfiles = environment.getActiveProfiles();
// 例えばプロファイルによっては動いてほしくないとき、の例
if (Arrays.stream(environment.getActiveProfiles()).filter(profile -> Objects.equals(profile, "sample")).findFirst().isPresent()) {
// プロファイルにsampleが指定されていたら~~~~
};
// ....(中略)....
return mnv;
}
}