当前位置: 移动技术网 > IT编程>开发语言>Java > Bean实例化的三种方式

Bean实例化的三种方式

2018年12月06日  | 移动技术网IT编程  | 我要评论

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方法
    }
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网