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

Bean实例化的三种方式

程序员文章站 2023-11-24 22:19:34
1. 构造器实例化 spring容器通过bean对应的默认的构造函数来实例化bean。 2. 静态工厂方式实例化 首先创建一个静态工厂类,在类中定义一个静态方法创建实例。 静态工厂类及静态方法: xml配置文件 3. 实例工厂方式实例化 该种方式的工厂类中,不再使用静态方法创建Bean实例,而是采用 ......

1. 构造器实例化

spring容器通过bean对应的默认的构造函数来实例化bean。

2. 静态工厂方式实例化

首先创建一个静态工厂类,在类中定义一个静态方法创建实例。

静态工厂类及静态方法:

public class myuserdaofactory{
    //静态方法,返回userdaoimpl的实例对象
    public static userdaoimpl createuserdao{
        return new userdaoimpl();
    }
}

xml配置文件

<?xml version="1.0" encoding="utf-8"?>
<!doctype beans public "-//spring//dtd bean//en"
       "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
       <!-- 将指定对象配置给spring,让spring创建其实例 -->
       <bean id="userdao" class="com.ioc.myuserdaofactory" factory-method="createuserdao"/>
</beans>

3. 实例工厂方式实例化

该种方式的工厂类中,不再使用静态方法创建bean实例,而是采用直接创建bean实例的方式。同时在配置文件中,需要实例化的bean也不是通过class属性直接指向其实例化的类,而是通过factory-bean属性配置一个实例工厂,然后使用factory-method属性确定使用工厂中哪个方法。

工厂类方法:

public class mybeanfactory{
    public mybeanfactory(){
        system.out.println("this is a bean factory");
    }
    public userdaoimpl createuserdao(){
        return new userdaoimpl();
    }
}

xml配置文件

<?xml version="1.0" encoding="utf-8"?>
<!doctype beans public "-//spring//dtd bean//en"
       "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
   <!-- 配置工厂 -->
   <bean id="mybeanfactory" class="com.ioc.mybeanfactory"/>
   <!-- 使用factory-bean属性配置一个实例工厂,使用factory-method属性确定工厂中的哪个方法 -->
   <bean id="userdao" factory-bean="mybeanfactory" factory-method="createuserdao"/>
</beans>

主函数

public class client {
    public static void main(string[] args) {
        // todo auto-generated method stub
        //此处定义xml文件放置的位置为src目录下的com/xml目录下
        string path = "com/xml/bean.xml";
        applicationcontext application = new classpathxmlapplicationcontext(path);
        userdaoimpl userdao = (userdaoimpl) application.getbean("userdao");
        userdao.sayhello();   //调用userdaoimpl类的sayhello方法
    }
}