04-实例化bean方式

7- 实例化bean方式

7.1 项目结构

7.2无参数构造方法

7.2.1 配置bean.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">
        <!--配置客户service
            标签:
                bean:配置javaBean对象
            属性:
                id:唯一标识名称
                class:类的全路径
            注意:默认调用类的无参数构造方法,实例化对象
        -->
    <bean id="customerService"  class="cn.guardwhy.service.impl.CustomerServiceImpl"></bean>

        <!--配置客户dao:
            标签:
                bean:配置javaBean对象
            属性:
                id:唯一标识名称
                class:类的全路径
                scope:设置bean的作用范围
                     属性取值:singleton:单例(默认值) prototype:多例
                              init-method:执行初始化,在构造方法执行后立即执行
                              destroy-method:执行销毁,在销毁spring容器的前执行

                      注意:默认调用类的无参数构造方法,实例化对象
        -->
    <bean id="customerDao" class="cn.guardwhy.dao.impl.CustomerDaoImpl"
          scope="singleton" init-method="init" destroy-method="destroy"></bean>
</beans>

7.3 使用静态工厂方法

7.3.1 编写静态工厂类

package cn.guardwhy.factory;

import cn.guardwhy.dao.CustomerDao;
import cn.guardwhy.dao.impl.CustomerDaoImpl;

/**
 * 静态工厂方法,实例化对象
 */
public class StaticFactoryBean {
    
    
    /**
     * 静态工厂方法
     */
    public static CustomerDao createCustomerDao(){
    
    
        // 返回结果
        CustomerDao customerDao = null;
        System.out.println("静态工厂方法实例化对象---------start");
        customerDao = new CustomerDaoImpl();
        System.out.println("静态工厂方法实例化对象----------end");
        return customerDao;
    }
}

7.3.2 配置bean.xml

<!--静态工厂方法实例化对象,说明:
     属性:
       id:唯一标识名称
       class:类全路径
       factory-method:指定工厂方法
-->
<bean id="staticDao" class="cn.guardwhy.factory.StaticFactoryBean" 
factory-method="createCustomerDao"></bean>

7.3.3 表现层

  • CustomerController
package cn.guardwhy.controller;

import cn.guardwhy.dao.CustomerDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 客户controller
 */
public class CustomerController {
    
    
    public static void main(String[] args) {
    
    
        // 1.加载spring配置文件,创建IOC容器
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        // 2.静态工厂实例化对象
        CustomerDao staticDao = (CustomerDao) context.getBean("staticDao");
        // 3.保存用户
        staticDao.saveCustomer();
    }
}

7.3.4 执行结果

7.4 使用实例工厂方法

7.4.1 编写工厂类

package cn.guardwhy.factory;

import cn.guardwhy.dao.CustomerDao;
import cn.guardwhy.dao.impl.CustomerDaoImpl;

/**
 * 实例工厂方法
 */
public class InstanceFactoryBean {
    
    
    // 工厂方法
    public CustomerDao createCustomerDao(){
    
    
        // 1.返回结果
        CustomerDao customerDao = null;
        System.out.println("实例工厂方法实例化对象--------start");
        customerDao = new CustomerDaoImpl();
        System.out.println("实例工厂方法实例化对象--------end");
        return customerDao;
    }
}

7.4.2 配置bean.xml

<!--实例工厂方法实例化对象
      第一步:配置静态工厂对象
      第二步:factory-bean:指定工厂对象
               factory-method:指定工厂方法
    -->
<bean id="instanceFactory" class="cn.guardwhy.factory.InstanceFactoryBean"></bean>
<bean id="instanceDao" factory-bean="instanceFactory" 
factory-method="createCustomerDao"></bean>

7.4.3 表现层(Controller)

  • CustomerController
package cn.guardwhy.controller;

import cn.guardwhy.dao.CustomerDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 客户controller
 */
public class CustomerController {
    
    
    public static void main(String[] args) {
    
    
        // 1.创建spring IOC容器
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        // 2.实例工厂方法实例化对象
        CustomerDao instanceDao = (CustomerDao) context.getBean("instanceDao");
        // 3.保存用户
        instanceDao.saveCustomer();
    }
}

7.4.4 操作结果

猜你喜欢

转载自blog.csdn.net/hxy1625309592/article/details/113554360