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方法 } }
推荐阅读