코드 리뷰 (Main)
1. enum타입.values()
- StaticResourceLocation 은 enum 타입이고 values 함수는 enum 클래스가 갖는 모든 상수 값을 배열의 형태로 리턴
(메소드는 X, 오로지 상수만)
2. Stream.of
- 배열을 스트림화
3. flatMap ()
- 배열을 1차원으로 평면화 시킴
4. toArray(String[]::new)
- 스트링 배열화 시키기
import java.util.Arrays;
import java.util.stream.Stream;
class Main
{
public enum StaticResourceLocation {
CSS("/css/**"),
JAVA_SCRIPT("/js/**"),
IMAGES("/images/**"),
WEB_JARS("/webjars/**"),
FAVICON("/**/favicon.ico");
private final String[] patterns;
StaticResourceLocation(String... patterns) {
this.patterns = patterns;
}
public Stream<String> getPatterns() {
return Arrays.stream(this.patterns);
}
public String getValue() {
return patterns[0];
}
}
public static void main(String[] args)
{
/*1번 방안 - 일반식*/
for(StaticResourceLocation aaa: StaticResourceLocation.values())
{
// 전체 상수 출력 (스트링 타입 X)
//(CSS, JAVA_SCRIPT, IMAGES, WEB_JARS, FAVICON)
System.out.println(aaa);
// 상수에 연결된 값
//(/css/**, /js/**, /images/**, /webjars/**, /**/favicon.ico)
System.out.println(aaa.getValue());
System.out.println("#########################");
}
System.out.println("-------------------------");
/*2번 방안 - Stream 이용 : 바로 출력*/
// 전체 상수 출력 (스트링 타입 X)
//(CSS, JAVA_SCRIPT, IMAGES, WEB_JARS, FAVICON)
Stream.of(StaticResourceLocation.values()).forEach(System.out::println);
System.out.println("#########################");
// 상수에 연결된 값 출력(스트링 타입 X)
//( /css/**, /js/**, /images/**, /webjars/**, /**/favicon.ico )
Stream.of(StaticResourceLocation.values())
.flatMap(StaticResourceLocation::getPatterns)
.forEach(System.out::println);
/*2.1번 방안 - Stream 이용 : 스트링 배열에 저장*/
//("/css**", "/js/**", "/images/**", "/webjars/**", "/**/favicon.ico")
String[] test =
Stream.of(StaticResourceLocation.values())
.flatMap(StaticResourceLocation::getPatterns)
.toArray(String[]::new);
System.out.println("$$$$$$$$$$$$$$$$$$$$$$$");
// String 형식의 배열로 저장됨 (주소값 저장되어 있음 for문으로 꺼내 써야함)
System.out.println(test);
}
}
응용
- 스프링 시큐리티에서 아래와 같이 사용 가능
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers(Stream.of(StaticResourceLocation.values())
.flatMap(StaticResourceLocation::getPatterns).toArray(String[]::new));
}
결과 값
해당 값이 들어가게 됌
##############################################
"/css**", "/js/**", "/images/**", "/webjars/**", "/**/favicon.ico"
반응형
'개발 > 자바' 카테고리의 다른 글
자바 ) requireNonNull (Feat. Optional) (0) | 2023.02.05 |
---|---|
자바 ) List의 내용을 대문자로 변경 후 List로 저장(feat. Stream) (0) | 2023.02.04 |
자바8) 두 배열에서 중복 값 제거 (feat. Stream.of) (0) | 2023.02.01 |
Rest API 연동 시 Http 상태 코드 400 발생 시 (0) | 2022.11.16 |
자바) [Ljava.lang.String; cannot be cast to class java.lang.String (0) | 2022.08.08 |
댓글