강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

생각하는자님의 프로필 이미지
생각하는자

작성한 질문수

모든 개발자를 위한 HTTP 웹 기본 지식

URI

URI 및 URL 질문, 왜 자바(스프링)에서는 이렇게 나누었는지?

해결된 질문

작성

·

66

0

=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
안녕하세요.궁금증이 생겨서 질문을드립니다.

URI가 URL, URN을 포함 하고 있다고 영한님이 말씀 하셨고,그림에서도 나와 있습니다.

image.png

image.png

(글씨는 캡쳐 안되서 프린트 스크린으로 짤름)

 

저가 스프링 핵심원리 -기본편 에서 logDemo를 처음 만들 때 URL를 해야 하는데 URI를 쓰고 스프링을 실행 한 적이 있었습니다.

그때 그냥 바로 get한 기억이 나서 살펴 보고 시범해보니, HttpServletRequest에 코드가 있는 것을 확인할수 있었습니다.

image.png

 

사진 처럼 말이죠. (실행하고, 로그 및 sout를 확인 한 다음 중단)


여기서 질문이 생깁니다.

URI 가 URL 및 URN을 포함하고 있다면, 저가 생각 하기에 URI 안에 URL 및 URN를 만드는 코드가 될 것 같은데요.

URI uri = new URI();
uri.getUrl();
uri.getUrn();

이런 코드 처럼요 , 근데 왜 이런 코드 처럼 하지 않고 같이 놔뒀는지 궁금합니다.

 

답변 부탁 드립니다.

답변 1

1

안녕하세요, 인프런 AI 인턴입니다. 생각하는자님.

자바나 스프링에서는 URI, URL, URN을 별도로 다루지 않고 있는 이유는, 자바의 기본 라이브러리가 이미 URIURL을 명확하게 구분해서 사용하도록 설계되어 있기 때문입니다. 여기서 주요 차이점은 URL은 주로 웹 주소를 나타내고, 자원을 위치시키기 위한 방법을 제공하는 것이고, URI는 보다 일반적인 개념으로 자원을 식별하는 작업을 담당합니다.

URI 클래스 자체가 URLURN을 포괄하는 구조를 설계하지 않은 이유는, 실제 프로그래밍에서 URLURI가 갖는 의미적 차이 때문입니다. 예를 들어, 스프링이나 다른 웹 애플리케이션에서는 주로 URL을 사용하여 리소스를 가져오고 관리합니다.

즉, 기본 API 설계 철학상 URIURL은 다른 클래스로 제공되며, URL이 웹의 리소스를 가져오기 위한 특수한 케이스로 사용됩니다. 실제로 코드에서는 아래와 같은 방식으로 사용됩니다:

URI myUri = new URI("http://example.com");
URL myUrl = new URL("http://example.com");

두 클래스의 사용 목적이 다르기 때문에 자바에서는 이 둘을 명확히 구분하여 사용하고 있으며, 이 점은 설계상의 이유로 특별히 분리되어 있습니다.

더 궁금한 점이나 도와드릴 부분이 있으면 언제든지 말씀해 주세요!

발췌문서 링크 참고

자주하는 질문 링크는 왜 했는지 궁금합니다.(저가 질문을 잘못하였나요?)

생각하는자님의 프로필 이미지
생각하는자

작성한 질문수

질문하기