Bean实例化

构造方法

public class BookDaoImpl implements BookDao{
    public BookDaoImpl(){

    }
    public void save(){
        System.out.println("book dao save ...");
    }
}
<bean id="bookDao" class="com.xxx.dao.impl.BookDaoImpl" />

使用构造方法,私有构造方法也会被调用,使用的反射 无参构造方法如果不存在,将抛出异常 BeanCreationException

静态工厂实例化Bean

public class OrderDaoFactory {
    public static OrderDao getOrderDao(){
        return new OrderDaoImpl();
    }
}

<bean id="orderDao" class="com.xxx.factory.OrderDaoFactory" factory-method="getOrderDao"/>

实例工厂实例化Bean

<bean id="UserFactory" class="com.xxx.factory.UserDaoFactory" />
<bean id="UserDao" factory-method="getUserDao" factory-bean="userFactory" />
public class UserDaoFactory {
    public UserDao getUserDao() {
        return new UserDaoImpl();
    }
}

使用FactoryBean实例化Bean

public class UserDaoFactoryBean implements FactoryBean<UserDao>{
    public UserDao getObject() throws Exception {
        return new UserDaoImpl();
    }

    public Class<?> getObjectType() {
        return UserDao.class;
    }

    // public boolean isSingleton(){
    //   return false;
    // }
}
<bean id="userDao" class="com.xxx.factory.UserDaoFactoryBean" />