[ODOP] 67일차 - AntPathMatcher 사용법 분석
1일 1포스팅 67일차. AntPathMatcher 를 분석하며 내용을 정리하였습니다. Spring 내부적으로 ant-style pattern 분석을 위해 사용하는 구현체로서 Apache ant 의 코드를 일부 차용하여 만들어진 클래스 입니다.
![[ODOP] 67일차 - AntPathMatcher 사용법 분석](/content/images/size/w1200/2023/08/-----2023-08-01----10.29.26-1.png)
AntPathMatcher 분석
구현부에 대한 간단한 부분은 간단히 읽어 볼 것이고 너무 길다면 테스트를 통해 작동 방식을 이해해보자
AntPathMatcher 란?
Spring 에서 uri 패턴 매치 시 사용되는 PathMatcher 의 구현체이다
Spring 에서는 Apache ant 의 일부 코드를 차용하여 AntPathMatcher 를 만들었다
우리가 Spring 을 통해 api 를 구성 할 때 사용하는 구문을 보고 ant-path style 이라고 하는데, 이를 구문분석하는 구현 클래스이다
생성자
AntPathMatcher 에는 두개의 생성자가 존재한다
하나씩 알아보자
public AntPathMatcher() {
this.pathSeparator = DEFAULT_PATH_SEPARATOR;
this.pathSeparatorPatternCache = new PathSeparatorPatternCache(DEFAULT_PATH_SEPARATOR);
}
아무런 매개변수도 받지 않는 생성자이다
기본적으로 DEFAULT_PATH_SEPARATOR 를 지정하고 있는 모습인데, 이 값은 /
기호이다.
재미있는 것은 바로 다음줄에 존재하는 코드이다
this.pathSeparatorPatternCache = new PathSeparatorPatternCache(DEFAULT_PATH_SEPARATOR);
여기서는 내부적으로 패턴에 대한 캐시를 진행하기 위해 PathSeparatorPatternCache
라는 객체를 사용해서 캐시를 구현한다
해당 구현체는 다음과 같다
private static class PathSeparatorPatternCache {
private final String endsOnWildCard;
private final String endsOnDoubleWildCard;
public PathSeparatorPatternCache(String pathSeparator) {
this.endsOnWildCard = pathSeparator + "*";
this.endsOnDoubleWildCard = pathSeparator + "**";
}
public String getEndsOnWildCard() {
return this.endsOnWildCard;
}
public String getEndsOnDoubleWildCard() {
return this.endsOnDoubleWildCard;
}
}
AntPathMatcher 내부에 존재하는 static class 이다
구현체로 봐서는 와일드 카드 문법을 사용하기 위한 것 같은데, 아직은 어떨 때 쓰이는지 모르겠다
일단 와일드카드를 캐싱하기 위해 this.pathSeparatorPatternCache
에 PathSeparatorPatternCache
라는 클래스를 사용한다는 것만 기억하자