用户工具


Autowired

如果bean类(A)的属性也是bean(B)。那在生成bean(A) 时如何初始化bean(B)? 有2种方式,使用Autowired注解,使用ref标签引用

    <bean id="lisi" class="bean.Lisi">
        <constructor-arg value="12"/>
    </bean>

    // 使用ref
    // 假设User类中有个属性类型是Lisi
    <bean id="user" class="bean.User">
        // 将User类中的lisi 注入一个Lisi类型的对象
        <property name="lisi">
            <ref bean="lisi"/>
        </property>
    </bean>
    
    // 使用Autowired
    // 将bean 按名字注入到User类中的变量中
    <bean id="user" class="bean.User" autowire="byName"></bean>

User类

public class User {
	@Autowired
	private Lisi lisi;
	
	public Lisi getLisi() {
		return lisi;
	}

	public void setLisi(Lisi lisi) {
		this.lisi = lisi;
	}
}

main

    public static void main( String[] args ) {

        BeanFactory factory = new ClassPathXmlApplicationContext("springg.xml");
        User userManager = (User)factory.getBean("user");
        System.out.println(userManager.getLisi().getAge());
    }