Last update: @1/29/2023
미리 보는 결론
resolve는 한국어로 해석해서 바꾼다, 풀이하다 정도로 이해하면 되고, 어떤 심볼(변수 이름 등)을 컴파일러가 해석하지 못할 때 cannot resolve 오류가 뜬다.
resolve?
개발을 하다보면 가끔 cannot resolved 라던가 cannot be resolved같은 오류 메세지를 보게 된다. 또 스프링 프레임워크를 보면 온갖 종류의 resolver가 등장한다. 사전을 보면 해결하다/다짐하다/결심하다/녹이다 따위가 나오는데, 눈꼽만큼도 해석에 도움이 되지 않는다.
차라리 resolve라는 영단어가 유래된 걸로 추정되는 프랑스어에서 그 뜻을 찾는 게 정확하다.
résoudre - 분해하다, 바뀌게 하다
대충 무언가를 다른 것으로 해석해서 바꾼다, 또는 풀이하다라는 의미다.
우리 뇌속에는 아래처럼 사과에 대한 정보가 코딩되어 있다.
과일 사과 = 🍎;
Java
복사
따라서 우리가 사과라는 단어를 보면 머릿 속에서 모양의 이미지를 떠올린다. 이것은 우리 뇌가 사과라는 심볼을 모양으로 resolve 하기 때문이다.
만약 엄마가 나에게 또잉 이라는 과일을 사오라고 하면 나의 뇌는 cannot resolve symbol '또잉'이라는 오류를 낸다. 살면서 또잉이라는 심볼은 내 뇌에 코딩된 적이 없기 때문에 resolve할 수가 없는 것이다
코딩도 마찬가지다. 내가 정의한 적이 없는 변수를 참조하려고 하면 같은 오류가 발생한다.
또잉이라는 변수에서 실제 데이터의 메모리 주소를 알아내서 데이터를 찾아오는게 불가능하다는 이야기이다. 즉, 또잉이라는 심볼을 그것이 가리키는 데이터로 resolve 해야하는데(해석해서 바꿔야 하는데) 심볼이 아무것도 가리키고 있지 않기 때문이다.
스프링 프레임워크에서 resolver
스프링 프레임워크에서는 각종 Resolver가 등장하는데, 위의 뜻을 빌어 치환기, 변환기, 해석기 정도로 해석하면 그 역할에 얼추 맞다.
•
ArgumentResolver는 요청으로 넘어온 문자열을 해석해서 다른 정수나 객체 등의 형태로 바꿔준다.
•
ExceptionResolver는 컨트롤러에서 넘어온 오류를 다른 오류/응답/요청 등으로 바꿔준다.
•
ViewResolver는 컨트롤러가 반환한 논리 View 주소를 물리 View 주소로 바꿔준다.
References
•
네이버 어학사전