<dependency> <groupId>com.example</groupId> <artifactId>bean-inject</artifactId> <version>1.0.0</version> </dependency> <bean id="beanA" class="com.example.BeanA"> <property name="dependencyB" ref="beanB"/> </bean> <bean id="beanB" class="com.example.BeanB"> <property name="dependencyC" ref="beanC"/> </bean> <bean id="beanC" class="com.example.BeanC"> <property name="dependencyD" ref="beanD"/> </bean> <bean id="beanD" class="com.example.BeanD"/> public class BeanA { private BeanB dependencyB; public void setDependencyB(BeanB dependencyB) { this.dependencyB = dependencyB; } } public class BeanB { private BeanC dependencyC; public void setDependencyC(BeanC dependencyC) { this.dependencyC = dependencyC; } } public class Application { public static void main(String[] args) { BeanInject.init("bean-inject-config.xml"); // ... } } public class Application { public static void main(String[] args) { BeanA beanA = BeanInject.getBean("beanA", BeanA.class); } }