클래스 로더
자바 코드를 컴파일하면 JVM에서 실행 가능한 상태가 되는데, 이 코드를 실제로 실행하려면 클래스를
로딩하는 과정이 필요하다. 이 과정을 수행하는 역할이 클래스 로더이다.
클래스 로더에는,
- 부트스트랩 클래스 로더 (최상위 클래스 로더)
- 확장 클래스 로더
- 시스템 클래스 로더
- 사용자 정의 클래스 로더 (개발자가 만든 로더)
와 같이 4가지 유형이 있다.
1. 부트스트랩 로더
: JVM 런타임 실행을 위해 기반이 되는 파일들을 로드 ; rt.jar 파일과 관련있다.
⬇️ 로딩 완료
2. 확장 클래스 로더
: 최상위 객체인 Object 클래스를 포함한 자바 API를 로드 ; ext 폴더 하위에 있는 jar 파일과 관련있다.
⬇️ 로딩 완료
3. 시스템 클래스 로더
: 클래스패스에 포함된 클래스들을 로드
* 사용자는 시스템 클래스 로더가 로드하는 클래스 패스 영역에만 접근할 수 있다.
* 라이브러리나 클래스를 클래스 패스에 추가하면 클래스 로더가 클래스를 로딩한다.
* 웹 애플리케이션 클래스 로더는 사용자 정의 클래스 로더에 속한다.
웹 애플리케이션 컨테이너는
- 웹 애플리케이션 자체 API를 제공하기 위해 컨테이너를 로드하는 클래스 로더
- jsp나 war 파일들을 다루기 위한 ServletContext 로더
를 사용한다.
'Spring' 카테고리의 다른 글
컴포넌트 스캔 (0) | 2024.05.20 |
---|---|
싱글톤 패턴과 싱글톤 컨테이너 (0) | 2024.05.20 |
BeanFactory와 ApplicationContext (0) | 2024.05.17 |
스프링 컨테이너와 빈 조회 (0) | 2024.05.17 |
관심사의 분리, 제어의 역전, 의존관계 주입 (0) | 2024.05.17 |
객체 지향 설계와 스프링 / SOLID 원칙 (0) | 2024.05.17 |