스프링은 제어 (IOC) 및 탄젠트 지향 (AOP) 컨테이너 프레임 워크의 가벼운 역전입니다. 프로그램에서 스프링 구성 콩을 얻는 방법은 무엇입니까?
Bean Factory (com.springframework.beans.factory.beanfactory)는 Spring Framework의 핵심 인터페이스입니다. 고급 IOC 구성 메커니즘을 제공합니다. BeanFactory를 사용하면 다양한 유형의 Java 객체를 관리 할 수 있습니다. 응용 프로그램 컨텍스트 (com.springframework.context.applicationContext)는 BeanFactory를 기반으로하며 더 많은 응용 프로그램 지향 함수를 제공합니다. 국제 지원 및 프레임 워크 이벤트 시스템을 제공하여 실제 응용 프로그램을보다 쉽게 만들 수 있습니다. 우리는 일반적으로 BeanFactory를 IOC 컨테이너라고 부르고 ApplicationContext는 응용 프로그램 컨텍스트라고합니다. 그러나 때로는 편의를 작성하기 위해 ApplicationContext 스프링 컨테이너를 호출합니다.
두 사람의 목적 상, 우리는 단순히 그것들을 나눌 수 있습니다. beanfactory는 스프링 자체를 목표로하는 스프링 프레임 워크의 인프라입니다. ApplicationContext는 스프링 프레임 워크를 사용하는 개발자를위한 것입니다. 거의 모든 응용 프로그램에서, 우리는 기본 beanfactory 대신 ApplicationContext를 직접 사용합니다.
ApplicationContext의 초기화와 BeanFactory 사이에는 큰 차이가 있습니다. BeanFactory가 컨테이너를 초기화 할 때 대상 Bean이 처음으로 접근 할 때까지 Bean을 인스턴스화하지 않습니다. ApplicationContext는 응용 프로그램 컨텍스트를 초기화 할 때 모든 단일 인스턴스 Bean을 인스턴스화합니다. 따라서 ApplicationContext의 초기화 시간은 BeanFactory의 초기화 시간보다 약간 길어집니다.
이 기사에는 @Resource 및 @autowired를 통한 자동 분사가 포함되지 않으며 ApplicationContext를 통해 스프링 구성 파일에서만 Bean 만 얻습니다.
XML에서 Bean을 구성하려면 가장 중요한 것은 org.springframework.context.applicationcontext를 얻는 것입니다.
ApplicationContext를 얻는 첫 번째 방법 :
import org.springframework.context.applicationcontext; import org.springframework.context.support.filesystemxMlApplicationContext = ApplicationContext ApplicationContext = new FileSystemMlApplicationContext ( "ApplicationContext.xml");
또는
import org.springframework.context.applicationcontext; import org.springframework.context.support.classPathXMlApplicationContext; private applicationContext ApplicationContext = new ClassPathXMlApplicationContext ( "ApplicationContext.xml");
이러한 방식으로 ApplicationContext를 인스턴스화하는 것은 매우 시간이 많이 걸립니다. 이 방법은 스프링 프레임 워크를 사용하는 독립형 응용 프로그램에 적합합니다. 프로그램이 구성 파일을 통해 스프링을 수동으로 초기화 해야하는 경우에만 사용하는 것이 좋습니다. ApplicationContext의 기본 구현 클래스는 ClassPathXmlApplicationContext 및 FilesyStemxMlApplicationContext입니다. 전자는 기본적으로 클래스 경로에서 구성 파일을로드하고 후자는 기본적으로 파일 시스템에서 구성 파일을로드합니다.
예:
public class beanmanager {private static applicationcontext context = new ClassPathXmlApplicationContext ( "AppContext.xml"); public static 객체 getBean (String beanid) {return context.getBean (beanid);}}web.xml에 서블릿을 작성하고 자동으로 시작한 다음 init 메소드에서 BeanManager를 호출하십시오.
init ()는 servletexception {beanmanager bm = new beanmanager (); // 옵션을 던지므로 웹 응용 프로그램이 시작될 때 스프링이 Bean 구성을로드합니다. // 그렇지 않으면 BeanManager가 처음으로 요청되면로드되어 속도에 한 번 영향을 미칩니다. }BeanManager.getBean (String Beanid); Bean 인스턴스를 얻기위한 Java 코드에서.
ApplicationContext를 얻는 두 번째 방법 : Spring에서 제공 한 도구 클래스를 통해 ApplicationContext 개체를 가져옵니다. 웹 프로젝트에 특별히 사용자 정의 된 방법입니다. 웹 프로젝트에서 사용하는 것이 좋습니다. 예를 들어:
ServletContext ServletContext = requestSession (). sc) ac1.getbean ( "beanid"); ac2.getbean ( "beanid");
javax.servlet.servletcontext를 통해 ApplicationContext 인스턴스 객체를 가져옵니다. 즉, 요청, 세션 등을 사용해야합니다.
이러한 방식으로 ApplicationContext 객체를 멤버 변수로 설정할 수 없습니다. 각 특정 방법에서 요청, 세션 등을 통해 ServletContext를 얻은 다음 ApplicationContext 인스턴스를 얻어야합니다.
따라서이 메소드는 ServletContext 객체를 얻을 수있는 경우에만 권장되며 ApplicationContext 객체를 멤버 변수로 정의 할 필요가 없습니다.
참고 : ApplicationContextUtils를 사용하여 ApplicationContext 인스턴스를 얻을 때는 web.xml 구성 파일에서 org.springframework.web.context.contextloaderListener 리스너를 추가해야합니다. 그렇지 않으면 ApplicationContext 객체를 얻을 수없고 NULL을 반환해야합니다.
구성 파일 : web.xml
<!-ContextLoaderListener는 ApplicationContext를 자동으로 주입하고-> <!-스프링 구성 파일로드 위치-> <context-param> <Param-name> ContextConfigLocation </par를 가져옵니다. am-name> <param-value>/web-inf/spring/appcontext.xml,/web-inf/spring/appinterceptor.xml </param-value> </context-param> <layer> <layerclass> org.spramework.web.context.contextloaderlistener </listenerclass>
3. 추상 클래스에서 상속 된 ApplicationObjectSupport
Abstract Class ApplicationObjectSupport는 applicationContext를 쉽게 얻을 수있는 getApplicationContext () 메소드를 제공합니다. Spring이 초기화되면 ApplicationContext 객체는 초록 클래스의 setApplicationContext (ApplicationContext Context) 메소드를 통해 주입됩니다.
4. 추상 클래스 WebApplicationObjectSupport에서 상속
GetWebApplicationContext ()를 사용하여 org.springframework.web.context.webapplicationContext를 얻으십시오. 웹 응용 프로그램은 일반적인 응용 프로그램보다 더 많은 기능이 있으므로 webApplicationContext는 ApplicationContext를 확장합니다. WebApplicationContext는 상수 root_web_application_ context_attribute를 정의합니다. 컨텍스트가 시작되면 WebApplicationContext 인스턴스 가이 키와 함께 ServletContext의 속성 목록에 배치됩니다. 따라서 다음은 다음과 같은 설명을 통해 웹 컨테이너에서 webApplicationContext를 직접 얻을 수 있습니다.
webApplicationContext wac = (webApplicationContext) servletContext.getAttribute (webApplicationContext.root_web_application_context_attribute);
5. 인터페이스 ApplicationContextAware를 구현하십시오
이 인터페이스의 setApplicationContext (ApplicationContext Context) 메소드를 구현하고 ApplicationContext 객체를 저장하십시오. 스프링이 초기화되면이 방법을 통해 ApplicationContext 객체가 주입됩니다.
세 번째, 네 번째 및 다섯 번째 방법은 모두 스프링 구성 파일에서 클래스를 구성해야합니다.
<!-ApplicationContextTool이 세 번째, 네 번째 및 다섯 번째 방법을 상속하거나 구현하는 특정 구현 클래스라고 가정합니다.
그렇지 않으면 ApplicationContext가 검색되지 않고 NULL이 반환됩니다.
위의 내용은 Java의 Spring Bean Method에 대한 요약을 소개합니다.