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

【spring】第五课工厂

程序员文章站 2024-03-18 18:38:22
...

实例化的三种方法

  • 默认构造

<bean id="" class="">  必须提供默认构造
  • 静态工厂

    • 常用与spring整合其他框架(工具)
    • 静态工厂:用于生成实例对象,所有的方法必须是static
<bean id=""  class="工厂全限定类名"  factory-method="静态方法">

静态工厂实例:

Java类

public interface UserService {
	public void addUser();
}
public class UserServiceTmpl implements UserService{
	
	@Override
	public void addUser() {
		System.out.println("b_factory add user");
	}
}

 

public class MyBeanFactory {
	
	/**
	 * 创建实例
	 * @return
	 */
	public static UserService createService(){
		return new UserServiceImpl();
	}
}

spring配置

	<!-- 将静态工厂创建的实例交予spring 
		class 确定静态工厂全限定类名
		factory-method 确定静态方法名
	-->
	<bean id="userServiceId" class="com.itheima.c_inject.b_static_factory.MyBeanFactory" factory-method="createService"></bean>
  • 实例工厂(接口类和接口实现类同上)

Java类

/**
 * 实例工厂,所有方法非静态
 *
 */
public class MyBeanFactory {
	
	/**
	 * 创建实例
	 * @return
	 */
	public UserService createService(){
		return new UserServiceImpl();
	}

}

spring配置

	<!-- 创建工厂实例 -->
	<bean id="myBeanFactoryId" class="com.itheima.c_inject.c_factory.MyBeanFactory"></bean>
	<!-- 获得userservice 
		* factory-bean 确定工厂实例
		* factory-method 确定普通方法
	-->
	<bean id="userServiceId" factory-bean="myBeanFactoryId" factory-method="createService"></bean>

理解:静态工厂 ≈ 从一家工厂拿货;

        实例工厂 ≈ 从多家工厂拿货(标明哪家【factory-bean】工厂拿哪些【factory-method】货即可)

相关标签: spring