Spring注入---实例工厂

在前面的两篇文章中我们介绍了Spring通过反射的机制注入,和静态的工厂两种方式的注入,在这一篇文章中我们用实例工厂的注入发放来实现创建对象

首先我们还是需要有一个实体类:

package com.wdg.domain;

public class Person {
	private String name;
	private int age;

	public Person() {
	}

	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}

}

实例工厂和静态工厂的区别在于,静态的工厂是在java代码里面来创建实例对象,但是实例工厂是在配置文件中给对象进行赋值

我们需要创建一个实例工厂:

package com.wdg.test;

import java.util.HashMap;
import java.util.Map;

import com.wdg.domain.Person;

public class PersonInstanceFactory {

	private Map<Integer, Person> map = new HashMap<Integer, Person>();

	public void setMap(Map<Integer, Person> map) {
		this.map = map;
	}

	public PersonInstanceFactory() {
	}

	public Person getPerson(int id) {
		return map.get(id);
	}

}

上面就是创建了一个实例的工厂,我们接下来要做的就是写配置文件,前面说了实例工厂和静态工厂的区别在于,实例工厂是在配置文件中给对象进行赋值。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans.xsd">
	<bean id="PersonFactory" class="com.wdg.test.PersonInstanceFactory">
		<property name="map">
			<map>
				<entry key="4">
					<bean class="com.wdg.domain.Person">
						<property name="age" value="4"></property>
						<property name="name" value="Honda"></property>
					</bean>
				</entry>

				<entry key="6">
					<bean class="com.wdg.domain.Person">
						<property name="age" value="6"></property>
						<property name="name" value="ford"></property>
					</bean>
				</entry>
			</map>
		</property>
		</bean>

		<bean id="person" factory-bean="PersonFactory" factory-method="getPerson">
			<constructor-arg value="4"></constructor-arg>
		</bean>
		
		<bean id="person" factory-bean="PersonFactory" factory-method="getPerson">
			<constructor-arg value="6"></constructor-arg>
		</bean>
</beans>

然后我们运行:

   public static void main(String[] args) {
    	ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-beans.xml");
    	Person person = (Person) ctx.getBean("person");
    	System.out.println(person);
	}

输出结果:Person [name=Honda, age=4]

上面就是我们实例工厂的模式来注入实体类了,希望对你有所帮助。如果感觉好,就扫下面的红包吧,哈哈感谢

                                                                        

祝生活愉快

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring-beans模块是Spring框架中最基础的模块之一,提供了BeanFactory和FactoryBean等Bean管理相关的类。在Spring中,Bean指的是被Spring IoC容器管理的对象,而BeanFactory则是管理Bean的工厂类,是Spring IoC容器的核心组件之一。 Spring-beans模块的主要功能如下: 1. BeanFactory:BeanFactory是Spring IoC容器的核心接口,提供了获取Bean、注册Bean和销毁Bean等方法。BeanFactory是Spring IoC容器的基础,包括DefaultListableBeanFactory、XmlBeanFactory等实现类。 2. FactoryBean:FactoryBean是一种特殊的Bean,可以通过实现FactoryBean接口来自定义Bean的创建过程。FactoryBean的作用是在Bean的实例化过程中添加一些逻辑,例如对Bean进行缓存、延迟初始化等操作。 3. BeanPostProcessor:BeanPostProcessor是Spring IoC容器提供的扩展点,可以在Bean的初始化过程中添加一些自定义的逻辑。BeanPostProcessor提供了两个方法:postProcessBeforeInitialization和postProcessAfterInitialization,分别在Bean的初始化前后执行。 4. BeanDefinition:BeanDefinition是Spring IoC容器中定义Bean的元数据,包括Bean的类型、属性、依赖关系等信息。BeanDefinition是Spring IoC容器管理Bean的基础,可以通过BeanDefinition来实现Bean的配置、管理和装配。 除了以上功能,Spring-beans模块还提供了很多其他的类和接口,如BeanWrapper、BeanNameAware、InitializingBean和DisposableBean等,用于实现Bean的属性注入、生命周期管理和销毁等操作。 总之,Spring-beans模块是Spring框架中最基础的模块之一,提供了Bean管理相关的类和接口,是Spring IoC容器的核心组件之一,使用Spring框架时必须引入该模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值