Spring-实例化bean方式

1.1 项目结构

1.2 无参构造方法

配置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>

1.3 静态工厂方法

静态工厂类

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;
    }
}

配置bean.xml

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

表现层

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();
    }
}

执行结果

1.4 实例工厂方法

编写工厂类

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;
    }
}

配置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>

表现层(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();
    }
}

操作结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值