欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实例化Bean对象的三种方式

程序员文章站 2022-05-23 15:50:24
...

一、实例化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();
}

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

相关标签: Spring框架