The general idea that an existing module or component can be changed by <i>injecting</i> additional behavior has been originally developed within <i>aspect-oriented programming</i> (AOP). And then this idea has been implemented in various frameworks like Spring (yet, not in its original form).