Annotated Autowiring
File: context.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="a" class="A"/> <bean id="b" class="B"/> <bean id="annotatedTarget" class="AnnotatedClass"/> <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> </beans> File: Main.java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) { ApplicationContext bf = new ClassPathXmlApplicationContext("context.xml"); System.out.println("annotatedTarget:"); System.out.println(bf.getBean("annotatedTarget")); } } class A { @Override public String toString() { return getClass().getName(); } } class B { @Override public String toString() { return getClass().getName(); } } class AnnotatedClass { @Autowired private A foo; @Autowired private A foo2; @Autowired private B bar; @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("AnnotatedClass"); sb.append("{foo=").append(foo); sb.append(", foo2=").append(foo2); sb.append(", bar=").append(bar); sb.append('}'); return sb.toString(); } }