JAVA_Spring  Ioc 实例化 bean 对象的三种方式

Spring  Ioc 实例化 bean 对象的三种方式 :

默认构造器创建

<bean id="userService" class="com.shsxt.service.UserService"></bean>
 //构造器实例化,默认调用其空构造
    @Test
        public void test01(){
            UserService userService = null;
            BeanFactory factory = new ClassPathXmlApplicationContext("spring01.xml");
            userService = (UserService) factory.getBean("userService");
            userService.test();
        }

 

通过默认构造器创建,空构造必须存在,否则创建失败

静态工厂

  package com.shsxt.factory; 
 
import com.shsxt.service.UserService; 
 
public class StaticFactory 
{  
public static UserService createUserService()
{   
return new UserService(); 
 } 

xml中bean的配置

<bean id="userService" class="com.shsxt.factory.StaticFactory"          factory-method="createUserService"/>

使用静态工厂的方式创建Bean

 //静态工厂实现实例化
        @Test
        public void test02(){
            UserDao userDao = null;
            BeanFactory factory = new ClassPathXmlApplicationContext("spring02.xml");
           userDao = (UserDao) factory.getBean("userDao");
            userDao.test();
    }

 实例化工厂实现

package com.factory;

import com.shsxt.dao.AccountDao;

public class InstanceFactory {
    public AccountDao getAccountDao(){
        return new AccountDao();
    }
}
  //实例化工厂实现实例化
    @Test
    public  void  test03(){
        BeanFactory factory = new ClassPathXmlApplicationContext("spring03.xml");
        AccountDao accountDao = (AccountDao) factory.getBean("accountDao");
        accountDao.test();
        //测试是不是单例模式
        System.out.println(factory.isSingleton("accountDao"));//true
    }
  <!-- 实例化工厂实现-->

<bean id="instanceFactory" class="com.factory.InstanceFactory" ></bean>
    <bean id="accountDao" factory-bean="instanceFactory" factory-method="getAccountDao"></bean>

三者之间的比较:

通过bean缺省构造函数创建:当各个bean的业务逻辑相互比较独立时,或者与外界关联较少时可以使用

静态factory方法创建:可以统一管理各个bean的创建,各个bean在创建之前需要相同的初始化处理,则可用这个factory方法进行统一的处理

实例化factory方法创建:1.将factory方法也作为业务bean控制,可以用于集成其他框架的bean创建管理方法,2.能够使bean和factory的角色互换

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值