우선 Environment가 무엇을 하는지 아래의 글을 한번 읽어보고 시작해도 좋고 바로 본론으로 넘어가도 괜찮다.
이번 프로젝트에서 Environment를 이용해 자신이 현재 local 인지 prd 인지 구별하여 메소드를 실행할지 안할지 결정하는 로직이 있었다 나는 엄청 신기했다 그래서 따라서 구현해보았고 정리를 해보려한다.
간단한 테스트를 위한 local과 prd ,default 문자열 리스트를 만들어준다
List<String> PROFILES = Arrays.asList("local", "prd", "default");
Environment를 import해준다.
private Environment environment;
PROFILES를 stream 돌려서 anyMatch로 현재 환경가 맞는 경우 true를 반환한다
PROFILES.stream().anyMatch(s -> {
System.out.println(s);
System.out.println(environment.acceptsProfiles(s));
return environment.acceptsProfiles(s);
});
간단한 활용으로 아래 코드에서는 (위코드와 같이 List<String> 형태가 아닌 local prd 등을 enum으로 만들어 사용했다.) 현재 실행환경이 defalut 일 때만 DefaultMemberMapper의 메소드를 실행 할 수 있도록 하였다.
public MemberMapper memberMapper() {
if (PROFILES.stream().map(ApplicationProfile::getName).anyMatch(requiredProfile -> environment.acceptsProfiles(requiredProfile))) {
return new DefaultMemberMapper();
}
return new EmptyMemberMapper();
}
'몰아 넣기' 카테고리의 다른 글
[java] Arrays의 메소드 (0) | 2022.06.10 |
---|---|
[java] 날짜와 시간 다루기 (0) | 2022.06.10 |
[java/spring] jwt토큰을 만들고 토큰를 다시 decoding 하기 (0) | 2022.03.12 |
[java/자바] .orElseThrow() 및 .ifPresent() 그리고 Stream().findFirst() 활용하기 (0) | 2022.03.08 |
[자바/Java] .toUpperCase() (0) | 2022.03.07 |