Context isolation and independence¶
Context isolation and independence refers to the architectural characteristic within the Spring Framework where hierarchically organized ApplicationContext instances maintain distinct boundaries.^[600-developer__java__spring__multipleApplicationContext.md]
In this hierarchy, a child context is designed to be aware of and access beans defined in its parent context, but the converse is not true: a parent context operates independently and cannot see beans defined within its child contexts^[600-developer__java__spring__multipleApplicationContext.md].
Architecture¶
The relationship is established via the setParent(ApplicationContext parent) method^[600-developer__java__spring__multipleApplicationContext.md]. When a parent is set, the child context gains visibility into the parent's bean definitions, effectively inheriting them.^[600-developer__java__spring__multipleApplicationContext.md]
This directional visibility allows for a modular structure where a "root" context often contains shared infrastructure beans, while child contexts contain specific beans localized to that module^[600-developer__java__spring__multipleApplicationContext.md].
Isolation Constraints¶
The independence of contexts is strictly enforced by the container.
- Upward visibility: A child context acts as a composite view; it can successfully retrieve beans (e.g.,
Car,Dog) registered in itself, its direct parent, or even the root context^[600-developer__java__spring__multipleApplicationContext.md]. - Downward isolation: Attempting to retrieve a bean (e.g.,
Egg) that exists only in a child context from within the parent context will result in a failure, such as aNoSuchBeanDefinitionException^[600-developer__java__spring__multipleApplicationContext.md].
This isolation implies that the lifecycle and configuration of one branch of the hierarchy do not intrusively affect the visibility or internal state of another branch or parent, outside of the established inheritance link^[600-developer__java__spring__multipleApplicationContext.md].
Related Concepts¶
- [[ApplicationContext]]
- [[Dependency Injection]]
- [[Inversion of Control]]
Sources¶
^[600-developer__java__spring__multipleApplicationContext.md]