Spring学习之实验五:配置通过静态工厂方法创建的bean、实例工厂方法创建的bean、FactoryBean

编程入门 行业动态 更新时间:2024-10-10 09:25:16

Spring学习之实验五:配置通过静态<a href=https://www.elefans.com/category/jswz/34/1770822.html style=工厂方法创建的bean、实例工厂方法创建的bean、FactoryBean"/>

Spring学习之实验五:配置通过静态工厂方法创建的bean、实例工厂方法创建的bean、FactoryBean

bean的创建默认是框架利用反射机制new出来的bean实例
工厂模式:工厂帮我们创建对象,有一个专门帮我们创建对象的类,这个类就是工厂

静态工厂:工厂本身不用创建对象;通过静态方法调用,对象 = 工厂类.工厂方法名();
实例工厂:工厂本身需要创建对象;工厂类 工厂对象 =new 工厂类();对象=工厂对象.getPerson();

一、通过静态工厂创建bean

工厂类

package Factory;import Test.Car;public class StaticFactory {public static Car getCar(String name){Car car = new Car();car.setCarName(name);car.setColor("黑色");car.setPrice(100);return car;}
}

xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=""xmlns:xsi=""xmlns:p=".g/schema/p"xmlns:util=""xsi:schemaLocation=" .xsd .0.xsd"><!-- 静态工厂配置 --><!-- class指定工厂的全类名,factory-method指定需要用的静态方法,用constructor-arg来传参数 --><bean id="car" class="Factory.StaticFactory" factory-method="getCar"><constructor-arg value="奔驰"></constructor-arg></bean></beans>

二、通过实例工厂创建bean

实例工厂类

package Factory;import Test.Car;public class Factory {public Car getCar(String name){Car car = new Car();car.setCarName(name);car.setColor("黑色");car.setPrice(100);return car;}
}

xml

		<!-- 实例工厂配置 --><!-- 先配置工厂对象,再用工厂的方法创建出对象 --><bean class="Factory.Factory" id="Factory"></bean><bean class="Test.Car" id="car02" factory-bean="Factory" factory-method="getCar"><constructor-arg value="宝马"></constructor-arg></bean>

3.通过实现FactoryBean接口来写工厂类

	FactoryBean(Spring规定的一个接口)只要是这个接口的实现类,Spring都认为是一个工厂1.ioc容器启动的时候不会创建实例2.FactoryBean:不论是单多实例,都是在获取的时候才会创建对象

FactoryBean实现类

package Factory;import org.springframework.beans.factory.FactoryBean;import Test.Car;public class FactoryTemp implements FactoryBean<Car>{@Overridepublic Car getObject() throws Exception {// TODO Auto-generated method stubCar car=new Car();car.setCarName("宝马");return car;}@Overridepublic Class<?> getObjectType() {// TODO Auto-generated method stubreturn Car.class ;}@Overridepublic boolean isSingleton() {// TODO Auto-generated method stubreturn false;}}

xml

<bean class="Factory.FactoryTemp" id="F"></bean>

测试

package Test;import static org.junit.Assert.*;import java.applet.AppletContext;
import java.util.List;
import java.util.Map;
import java.util.Properties;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class IOCTest2 {private ApplicationContext ioc=new  ClassPathXmlApplicationContext("IOCTest.xml");@Testpublic void test() {Object bean = ioc.getBean("F");System.out.println(bean);}}

更多推荐

Spring学习之实验五:配置通过静态工厂方法创建的bean、实例工厂方法创建的bean、FactoryBean

本文发布于:2024-03-05 09:44:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1711954.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:工厂   方法   静态   实例   Spring

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!