programing

응용 프로그램 컨텍스트이게 뭐야?

muds 2023. 10. 28. 08:19
반응형

응용 프로그램 컨텍스트이게 뭐야?

제 동료들은 "응용프로그램 컨텍스트"라는 단어를 자주 사용합니다.많은 기사들에서 이 배치는 매우 자주 사용되기도 했습니다.

현재 제가 이해하는 바로는 애플리케이션 컨텍스트는 단일 xml 파일입니다.

하지만 제 말이 맞다면 사람들은 구성 xml 파일 대신 "응용프로그램 컨텍스트"를 사용하지 않을 것입니다.

제가 이 문제를 처리하는 것을 도와주실 수 있습니까?

@fake는 봄의 의미에 대해 직설적인 대답을 합니다.간단히 말해, 구성(일반적으로 XML 파일 주석 기반)을 로드하는 개체입니다. 그러면 Spring이 빈과 그 이점을 관리하기 시작합니다.

  • 포장으로 신고된 콩
  • 주석에 의해 선언된 콩
  • 시공자 및 방법 자동배선
  • 콩주사
  • 구성, .properties 및 .yaml 파일 로딩
  • 기타

응용프로그램 컨텍스트를 시작하려면 다음 중 하나를 사용할 수 있습니다.

  • 응용프로그램을 시작할 때 응용프로그램 컨텍스트를 수동으로 로드합니다.이 작업은 샘플 용도 또는 독립 실행형 응용프로그램에서 수행됩니다.

    public class Foo {
        public static void main(String[] args) {
            ApplicationContext context =
                new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
            //use the context as you wish...
        }
    }
    
  • Spring MVC를 사용하는 Java 웹 애플리케이션의 경우,DispatchServlet가 응용 프로그램 컨텍스트를 로드하므로 응용 프로그램의 WEB-INF 폴더에 springapp-servlet.xml 파일만 생성하면 됩니다.

응용프로그램 컨텍스트는 단일 구성(XML 기반 여부)에 연결됩니다.마침표.


이를 이해한 후, 응용프로그램당 하나 이상의 응용프로그램 컨텍스트를 가질 수 있다는 것도 이해할 수 있었습니다.이것은 2개 이상을 가지는 것입니다.ApplicationContexts 동일한 응용 프로그램에서콘솔 응용 프로그램의 마지막 예를 통해 다음을 쉽게 확인 방법은 다음과 같습니다.

public class Foo {
    public static void main(String[] args) {
        ApplicationContext context =
            new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
        ApplicationContext context2 =
            new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
        //use the context as you wish...
    }
}

동일한 XML 구성을 사용하는 두 개의 응용프로그램 컨텍스트가 있습니다.이것을 할 수 있나요?네, 여기서 실제로 보고 계십니다.그럼 뭐가 다른 거지?주요 차이점은 스프링 빈 싱글톤 스코프가 애플리케이션 컨텍스트당 싱글톤이라는 것이며, 이는 다음을 검색할 때 의미합니다.BarapplicationContext.xml 파일에 구성되어 있는 bean.context 다음에서 검색하는 것과 같지 않습니다.context2, 하지만 몇 번의 검색은context같은 것을 돌려줄 것입니다.Bar콩 예

이것이 좋은 관행으로 여겨지나요, 나쁜 관행으로 여겨지나요? 다 해결해야 할 문제에 달려 있지 않을 것입니다. (마지막 예의 경우, 는 그것이 나쁜 관행이라고 말하고 싶습니다.대부분의 사람들은 모든 빈을 한 곳에서(XML 등을 통해) 구성하고 단일 애플리케이션 컨텍스트로 로드하는 것을 권장합니다.

이것을 간단한 말로 이해해 봅시다.

ApplicationContext는 애플리케이션에 구성 정보를 제공하는 데 사용되는 Spring 애플리케이션 내의 중앙 인터페이스입니다.응용프로그램 실행을 시작할 때 생성됩니다.

애플리케이션에 필요한 전체 구성을 제공합니다.

  1. 콩 공장 - 콩이라고 불리는 자바 객체의 제작을 담당합니다.한 가지 예로 응용프로그램의 구성요소를 들 수 있습니다.
  2. 응용프로그램 수신기 - 이벤트에 필요한 모든 수신기.
  3. 웹 서버 정보.
  4. 응용프로그램 현재 환경별 정보입니다.
  5. 리소스 패턴 확인기 - 경로 일치기가 있는 리소스 로더입니다.
  6. 라이프 사이클 프로세서.
  7. 클래스 로더.
  8. 모니터 시작 및 종료.
  9. 서블릿 컨텍스트.
  10. 리더와 스캐너.
  11. 로거

기타.

package com.srmhitter9062.spring;
    
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
    
public class ApplicationContextUtils implements ApplicationContextAware {
    
    private static ApplicationContext ctx;
    
    @Override
    public void setApplicationContext(ApplicationContext appContext)
            throws BeansException {
        ctx = appContext;
    
    }
    
    public static ApplicationContext getApplicationContext() {
        return ctx;
    }
}

아래 스냅샷에서 애플리케이션 개체에 대한 몇 가지 아이디어를 얻을 수 있습니다.

snapshot

요약하면, 응용프로그램 컨텍스트는 응용프로그램을 실행하기 위해 생성된 구성 개체라고 할 수 있습니다.

applicationContext.xml는 "루트 웹앱 컨텍스트"에 대한 콩을 정의합니다.웹 인식 애플리케이션 컨텍스트입니다.

웹 애플리케이션의 모든 서블릿 간에 공유되는 콩을 사용합니다.

이것이 도움이 되었으면 좋겠습니다.

동료들이 의미하는 것은 로드된 스프링 애플리케이션 컨텍스트이며, 이를 통해 다음을 액세스할 수 있다는 것입니다.

  • 애플리케이션의 구성,
  • 초기화된 콩,
  • 응용 프로그램 이벤트 API,
  • 기타

자바독에서:

응용프로그램에 대한 구성을 제공하는 중앙 인터페이스입니다.이것은 응용프로그램이 실행되는 동안 읽기 전용이지만 구현에서 이를 지원하는 경우 다시 로드될 수 있습니다.

ApplicationContext는 다음을 제공합니다. [...]

언급URL : https://stackoverflow.com/questions/19615972/application-context-what-is-this

반응형