实例化Bean对象的三种方式

本文详细介绍了在Spring框架中实例化Bean对象的三种方式:1) 使用无参数构造方法,需要注意类中必须有无参构造器;2) 通过静态工厂方法,适用于包含业务逻辑和权限校验的情况;3) 利用动态工厂方法,需要配置更多内容,包括两个bean,分别对应工厂类和实例化对象。实践中,最常用的方法是无参数构造方法。
摘要由CSDN通过智能技术生成
一、实例化Bean对象的三种方式

配置方法前先创建一个接口和接口实现类

接口

public interface UserService {
    public void hello();
}

接口实现类

public class UserServiceImpl implements UserService{

    public UserServiceImpl(){
        System.out.println("UserServiceImpl对象被创建...");
    }

    public void hello() {
        System.out.println("Hello IOC");
    }

    //初始化方法
    public void init(){
        System.out.println("对象创建完成,进行初始化操作!!");
    }

    //销毁方法
    public void  destory(){
        System.out.println("销毁对象!!");
    }
}

1、默认无参数构造方法(默认方式,基本上使用)

采用这种实例化方式要注意的是:要实例化的类中如果有构造器的话,一定要有一个无参的构造器。

applicationContext 配置

 <bean id="us" class="cn.tx.service.UserServiceImpl" />

2、静态工厂方法
静态工厂方法的优点:编写很多业务逻辑、权限校验等。
这种方式进行实例化就要具备两个条件:
(一)、要有工厂类及其工厂方法;
(二)、工厂方法是静态的。
applicationContext 配置

<bean id="us" class="cn.tx.demo1.StaticFacetory" factory-method="createUs" />

静态工厂方法代码:

/*静态工厂方法*/
public class StaticFacetory{
    //静态工厂方法
    public static UserService createUs(){
        System.out.println("通过静态工厂方法创建UserServiceImpl对象...");
        //静态工厂方法的优点:编写很多业务逻辑、权限校验等。
        return new UserServiceImpl();
    }

}

3、动态工厂方法

使用动态工厂方法不需要是静态的,但是在spring的配置文件中需要配置更多的内容,这里需要配置两个bean,第一个bean使用的构造器方法实例化工厂类,第二个bean中的id是实例化对象的名称,factory-bean对应的被实例化的工厂类的对象名称,也就是第一个bean的id,factory-method是非静态工厂方法。

applicationContext 配置

<bean id="dfactory" class="cn.tx.demo1.DFactory"/>
<bean id="us" factory-bean="dfactory" factory-method="createUs"/>

动态工厂方法代码:

/*动态工厂方法*/
public class DFactory {
    public UserService createUs(){
        System.out.println("动态工厂....");
        return new UserServiceImpl();
    }
}

测试调用,三种方式的调用方式一样:

@Test
public void run1(){
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
UserService us= (UserService) ac.getBean("us");
us.hello();
}

总之,我们用得最多的是第一种,默认无参数构造方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值