读书人

spring器皿初始化

发布时间: 2012-12-19 14:13:14 作者: rapoo

spring容器初始化

?

?

?

?

 * Configure the factory's standard context characteristics, * such as the context's ClassLoader and post-processors. *配置BeanFactory标准上下文特性,如类装载器,PostProcesser等 * @param beanFactory the BeanFactory to configure */protected void prepareBeanFactory(ConfigurableListableBeanFactory beanFactory) {// Tell the internal bean factory to use the context's class loader.beanFactory.setBeanClassLoader(getClassLoader());// Populate the bean factory with context-specific resource editors.beanFactory.addPropertyEditorRegistrar(new ResourceEditorRegistrar(this));// Configure the bean factory with context callbacks.beanFactory.addBeanPostProcessor(new ApplicationContextAwareProcessor(this));beanFactory.ignoreDependencyInterface(ResourceLoaderAware.class);beanFactory.ignoreDependencyInterface(ApplicationEventPublisherAware.class);beanFactory.ignoreDependencyInterface(MessageSourceAware.class);beanFactory.ignoreDependencyInterface(ApplicationContextAware.class);// BeanFactory interface not registered as resolvable type in a plain factory.// MessageSource registered (and found for autowiring) as a bean.beanFactory.registerResolvableDependency(BeanFactory.class, beanFactory);beanFactory.registerResolvableDependency(ResourceLoader.class, this);beanFactory.registerResolvableDependency(ApplicationEventPublisher.class, this);beanFactory.registerResolvableDependency(ApplicationContext.class, this);// Detect a LoadTimeWeaver and prepare for weaving, if found.if (beanFactory.containsBean(LOAD_TIME_WEAVER_BEAN_NAME) && JdkVersion.isAtLeastJava15()) {// Register the (JDK 1.5 specific) LoadTimeWeaverAwareProcessor.try {Class ltwapClass = ClassUtils.forName("org.springframework.context.weaving.LoadTimeWeaverAwareProcessor",AbstractApplicationContext.class.getClassLoader());BeanPostProcessor ltwap = (BeanPostProcessor) BeanUtils.instantiateClass(ltwapClass);((BeanFactoryAware) ltwap).setBeanFactory(beanFactory);beanFactory.addBeanPostProcessor(ltwap);}catch (ClassNotFoundException ex) {throw new IllegalStateException("Spring's LoadTimeWeaverAwareProcessor class is not available");}// Set a temporary ClassLoader for type matching.beanFactory.setTempClassLoader(new ContextTypeMatchClassLoader(beanFactory.getBeanClassLoader()));}}
?

?

?

读书人网 >编程

热点推荐