Spring's philosophy is to join the Java object to the framework without affecting the design of the Java object.
The EJB framework uses an invasive method to design an object, which requires you to join the code that meets the EJB specification in your design. Some lightweight COP frameworks, such as Avalon, also require some specification, such as a serviceable interface, which is a typical Type 1 practice.
Full text: Spring's charm