java 의 클래스 로더의 개념
Java의 클래스 로더 는 Java 런타임의 환경의 일부이며, JVM (Java Virtual Machine)에 클래스 동적을로드 할 책임이 있습니다. Java Application은 클래스 로더를 사용하여 시작 중에 모든 클래스를로드하는 대신 주문시 클래스 파일을로드합니다.
주요 특징 :
동적 로딩 : 클래스는 참조 할 때 주문형으로로드됩니다.
커미션 모델
: 아버지의 커미션 모델에 따라로드 클래스의 요청은 로컬 로딩을 시도하기 전에 부모 로더로 전달됩니다.
격리 : 클래스 격리를 유지하는 데 도움이되며, 이는 응용 프로그램 서버와 같은 복잡한 시스템에서 특히 유용합니다.
클래스 로더 유형 :
안내 클래스 로더
:
, 및 기타에서 핵심 Java 클래스를로드하십시오. -
JVM의 일부는 기본 방식으로 구현됩니다.
확장 로더 - :
Java Extension에서 클래스를로드하십시오 ().
응용 프로그램/시스템 클래스 로더 - :
응용 프로그램의 적용 ( 환경 변수)에서 클래스를로드하십시오.
사용자 정의 클래스 로더
:
사용자 정의 클래스 로더는 기본 로딩 동작을 확장하거나 수정하는 데 사용됩니다.
-
클래스 로더 메소드 :
: 지정된 이름의 클래스를 찾으십시오.
: 커미션 모델을 사용하여 클래스를로드하십시오. -
: 바이트 배열은 클래스 인스턴스로 변환됩니다.
java.lang
java.util
클래스 로더 계층 구조 :
-
스프링의 클래스 로더
스프링 프레임 워크 에서 스프링 응용 프로그램이 클래스를 동적으로로드하고 런타임 중에 리소스를 관리하기 때문에 클래스 로더의 개념은 매우 중요합니다. Spring and Java의 클래스 로더 메커니즘은 클래스 및 리소스로드를 향상시키기 위해 통합됩니다.
봄의 사용 :
로드 된 Bean 및 구성 - :
Spring은 클래스 로더를 사용하여 구성 파일에 정의 된 Bean을로드하거나 주석 클래스를 사용합니다.
-
로드 리소스
jre/lib/ext
:
Spring은 파일, URL 또는 클래스 경로 리소스를로드하기 위해 추상화를 제공합니다. 현장 뒤에서 클래스 로더를 사용하여 리소스를 분석합니다.
-
> 예 :
<code>引导类加载器
↑
扩展类加载器
↑
应用程序类加载器
↑
自定义类加载器(如有)</code>
로그인 후 복사
핫 하중 - :
Spring Boot DevTools 사용자 정의 클래스 로더와 같은 도구는 개발 프로세스 중에 클래스를 동적으로 다시로드합니다.
-
사용자 정의 된 클래스 로더 장면 :
스프링 애플리케이션이 컨테이너 또는 마이크로 서비스에 배치되면 일반적으로 맞춤형 클래스 로더는 일반적으로 종속성을 분리하기 위해 구현됩니다 (예 : Tomcat 또는 Kubernetes).
면을 향한 측면 -지향 프로그래밍 (AOP)
:
Spring의 AOP는 일반적으로 클래스 로더를 통해 동적으로로드되는 프록시 클래스를 사용합니다. -
스프링 클래스 로더 추상화 :
-
스프링의 캡슐화 된 클래스 로더로 리소스로드를 단순화합니다.
클래스 로더는 일반적으로 특정 스레드에 액세스하는 데 사용되므로 스프링이 세 번째 파티 라이브러리와 완벽하게 통합 될 수 있습니다.
-
<:> 일반적인 예 :
클래스 로더를 사용하여 파일에서 Bean을로드합니다.
위 내용은 Spring- : Classload-in-Java-VS-Spring의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!