Source:
<code>public void afterPropertiesSet() throws Exception { if (this.applicationContext != null) { this.beanResolver = new BeanFactoryResolver(this.applicationContext); ConversionService conversionService = IntegrationContextUtils.getConversionService(this.applicationContext); if (conversionService != null) { this.typeConverter = new StandardTypeConverter(conversionService); } Map<String, SpelFunctionFactoryBean> functionFactoryBeanMap = BeanFactoryUtils.beansOfTypeIncludingAncestors(this.applicationContext, SpelFunctionFactoryBean.class); for (SpelFunctionFactoryBean spelFunctionFactoryBean : functionFactoryBeanMap.values()) { if (!this.functions.containsKey(spelFunctionFactoryBean.getFunctionName())) { this.functions.put(spelFunctionFactoryBean.getFunctionName(), spelFunctionFactoryBean.getObject()); } } try { SpelPropertyAccessorRegistrar propertyAccessorRegistrar = this.applicationContext.getBean(SpelPropertyAccessorRegistrar.class); Map<String, PropertyAccessor> propertyAccessorsFromRegistrar = propertyAccessorRegistrar.getPropertyAccessors(); for (String key : propertyAccessorsFromRegistrar.keySet()) { if (!this.propertyAccessors.containsKey(key)) { this.propertyAccessors.put(key, propertyAccessorsFromRegistrar.get(key)); } } } catch (NoSuchBeanDefinitionException e) { } ApplicationContext parent = this.applicationContext.getParent(); if (parent != null) { IntegrationEvaluationContextFactoryBean parentFactoryBean = parent.getBean(IntegrationEvaluationContextFactoryBean.class); <START> Map<String, PropertyAccessor> propertyAccessorsFromParent = parentFactoryBean.propertyAccessors; <END> for (String key : propertyAccessorsFromParent.keySet()) { if (!this.propertyAccessors.containsKey(key)) { this.propertyAccessors.put(key, propertyAccessorsFromParent.get(key)); } } } } }</code><technical_language>but, compiler allows it, a bit dirty reference parent context bean's field directly. a package (or private?) getter</technical_language>

Target:
public void afterPropertiesSet() throws Exception { if (this.applicationContext != null) { this.beanResolver = new BeanFactoryResolver(this.applicationContext); ConversionService conversionService = IntegrationContextUtils.getConversionService(this.applicationContext); if (conversionService != null) { this.typeConverter = new StandardTypeConverter(conversionService); } Map<String, SpelFunctionFactoryBean> functionFactoryBeanMap = BeanFactoryUtils.beansOfTypeIncludingAncestors(this.applicationContext, SpelFunctionFactoryBean.class); for (SpelFunctionFactoryBean spelFunctionFactoryBean : functionFactoryBeanMap.values()) { if (!this.functions.containsKey(spelFunctionFactoryBean.getFunctionName())) { this.functions.put(spelFunctionFactoryBean.getFunctionName(), spelFunctionFactoryBean.getObject()); } } try { SpelPropertyAccessorRegistrar propertyAccessorRegistrar = this.applicationContext.getBean(SpelPropertyAccessorRegistrar.class); for (Entry<String, PropertyAccessor> entry : propertyAccessorRegistrar.getPropertyAccessors().entrySet()) { if (!this.propertyAccessors.containsKey(entry.getKey())) { this.propertyAccessors.put(entry.getKey(), entry.getValue()); } } } catch (NoSuchBeanDefinitionException e) { } ApplicationContext parent = this.applicationContext.getParent(); if (parent != null && parent.containsBean(IntegrationContextUtils.INTEGRATION_EVALUATION_CONTEXT_BEAN_NAME)) { IntegrationEvaluationContextFactoryBean parentFactoryBean = parent.getBean("&" + IntegrationContextUtils.INTEGRATION_EVALUATION_CONTEXT_BEAN_NAME, IntegrationEvaluationContextFactoryBean.class); for (Entry<String, PropertyAccessor> entry : parentFactoryBean.getPropertyAccessors().entrySet()) { if (!this.propertyAccessors.containsKey(entry.getKey())) { this.propertyAccessors.put(entry.getKey(), entry.getValue()); } } } } this.initialized = true; }