Day2 bean factory method

Factory method to create bean

Spring factory method provides another way to create the bean, belong to the factory design pattern, to provide greater flexibility to create the bean, shielding the creation of complex objects.

Static factory method

usage:

<bean id="user" class="com.bailiban.day2.factory.staticfactory.StaticFactory" factory-method="getUser" />
  • class: Set a static factory method class
  • factory-method: the static method specified bena production;

Example:
static factory method in class:

/**
 * 静态工厂方法
 */
public class StaticFactory {

    public static User getUser() {
        return new User(1001, "Jim");
    }

    public static UserDao getUserDao() {
        return new UserDaoImpl();
    }
}

Profiles:

<!-- class: 静态工厂方法类
     factory-method:用于生产指定对象的静态工厂方法
    -->
    <bean id="user" class="com.bailiban.day2.factory.staticfactory.StaticFactory" factory-method="getUser" />
    <bean id="userDao" class="com.bailiban.day2.factory.staticfactory.StaticFactory" factory-method="getUserDao" />

test:

    public static void main(String[] args) {

        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                "com/bailiban/day2/factory/staticfactory/staticFactory.xml");
        User user = (User) context.getBean("user");
        System.out.println(user);
        UserDao userDao = (UserDao) context.getBean("userDao");
        System.out.println(userDao);
    }

operation result:

User{id=1001, name='Jim'}
com.bailiban.day1.helloworld.dao.impl.UserDaoImpl@55fe41ea

Instance factory method

usage:

<bean id="instanceFactory" class="com.bailiban.day2.factory.instancefactory.InstanceFactory" />
    <bean id="user" factory-bean="instanceFactory" factory-method="getUser" />
  1. Specifies example plant bean: instanceFactory;
  2. In the bean to be produced, specify:
  • factory-bean: the bean instance factory method;
  • factory-method: Method of the bean plant designated production;

Examples:
Examples of class factory method:

/**
 * 实例工厂方法
 */
public class InstanceFactory {

    public User getUser() {
        return new User(1001, "Jim");
    }

    public UserDao getUserDao() {
        return new UserDaoImpl();
    }
}

Profiles:

    <bean id="instanceFactory" class="com.bailiban.day2.factory.instancefactory.InstanceFactory" />
    <!-- factory-bean: 实例工厂方法bean
         factory-method:指定生产该bean的工厂方法
    -->
    <bean id="user" factory-bean="instanceFactory" factory-method="getUser" />
    <bean id="userDao" factory-bean="instanceFactory" factory-method="getUserDao" />

test:

    public static void main(String[] args) {

        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                "com/bailiban/day2/factory/instancefactory/instanceFactory.xml");
        User user = (User) context.getBean("user");
        System.out.println(user);
        UserDao userDao = (UserDao) context.getBean("userDao");
        System.out.println(userDao);
    }

operation result:

User{id=1001, name='Jim'}
com.bailiban.day1.helloworld.dao.impl.UserDaoImpl@55fe41ea

Guess you like

Origin www.cnblogs.com/cheng18/p/12064417.html