3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SpringBootで現在実行中のプロファイル(Profile)を取得する

Posted at

設定する方法はあるけれど、取得する方法ってなんだっけ

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;
	}
}

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?