Spring中的静态工厂与实例工厂
静态工厂与实例工厂
创建AirPlane基础类
package com.atguigu.bean;public class AirPlane {private String fdj; //飞机品牌private String yc; //飞机翼长private Integer personNum; //可载人数private String jzName; //机长名字private String fjsName; //副机长名字@Overridepublic String toString() {return "AirPlane [fdj=" + fdj + ", yc=" + yc + ", personNum=" + personNum + ", jzName=" + jzName + ", fjsName="+ fjsName + "]";}public String getFdj() {return fdj;}public void setFdj(String fdj) {this.fdj = fdj;}public String getYc() {return yc;}public void setYc(String yc) {this.yc = yc;}public Integer getPersonNum() {return personNum;}public void setPersonNum(Integer personNum) {this.personNum = personNum;}public String getJzName() {return jzName;}public void setJzName(String jzName) {this.jzName = jzName;}public String getFjsName() {return fjsName;}public void setFjsName(String fjsName) {this.fjsName = fjsName;}}
创建静态工厂类
package com.atguigu.factory;import com.atguigu.bean.AirPlane;/*** 静态工厂* @author Keeper**/ public class AirPlaneStaticFactory {public static AirPlane getAirPlane(String jzName){System.out.println("AirPlaneStaticFactory正在造飞机!");AirPlane airPlane = new AirPlane();airPlane.setFdj("蓝天");airPlane.setFjsName("lfy");airPlane.setJzName(jzName);airPlane.setPersonNum(30);airPlane.setYc("198.8cm");return airPlane;}}
创建实例工厂类
package com.atguigu.factory;import com.atguigu.bean.AirPlane;/*** 实例工厂* @author Keeper**/ public class AirPlaneInstanceFactory {public AirPlane getAirPlane(String jzName){System.out.println("AirPlaneInstanceFactory正在造飞机!");AirPlane airPlane = new AirPlane();airPlane.setFdj("蓝天");airPlane.setFjsName("lfy");airPlane.setJzName(jzName);airPlane.setPersonNum(30);airPlane.setYc("198.8cm");return airPlane;}}
工厂配置文件
<?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"><!-- 工厂模式:工厂帮我们创建对象,有一个专门创建对象的类AirPlane ap = AirPlaneFactory.getAirPlane(String jzName);静态工厂:工厂本身不用创建,通过静态方法调用实例工厂:工厂本身需要创建,需要先new工厂类对象--><!-- 静态工程(不需要创建工厂本身) --><!-- factory-method:指定哪个方法是工厂方法 --><bean id="airPlane01" class="com.atguigu.factory.AirPlaneStaticFactory" factory-method="getAirPlane"><!-- 可以为方法指定参数 --><constructor-arg value="张三"></constructor-arg></bean><!--实例工厂1、配置出实例工厂类对象2、配置要创建的airPlane使用哪个工厂创建(1)指定工厂实例(factory-bean)(2)指定工厂方法(factory-method)3、传参数--><bean id="airPlane02" class="com.atguigu.factory.AirPlaneInstanceFactory"></bean><!--factory-bean:指定当前对象创建使用哪个工厂 factory-method:指定哪个方法是工厂方法--><bean id="airPlane" class="com.atguigu.bean.AirPlane" factory-bean="airPlane02" factory-method="getAirPlane"><constructor-arg value="李四"></constructor-arg></bean></beans>
测试
package com.atguigu.test;import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;import com.atguigu.factory.AirPlaneStaticFactory;import sun.awt.AppContext;public class AirPlaneTest {private ApplicationContext context = new ClassPathXmlApplicationContext("bean_air.xml");/*** 测试静态工厂*/@Testpublic void testAirPlaneStaticFactory() {Object airPlane = context.getBean("airPlane01");System.out.println(airPlane);/** AirPlaneStaticFactory正在造飞机!AirPlane [fdj=蓝天, yc=198.8cm, personNum=30, jzName=张三, fjsName=lfy]*/}/*** 测试实例工厂*/@Testpublic void testAirPlaneInstanceFactory() {Object airPlane = context.getBean("airPlane");System.out.println(airPlane);}/** AirPlaneStaticFactory正在造飞机!AirPlaneInstanceFactory正在造飞机!AirPlane [fdj=蓝天, yc=198.8cm, personNum=30, jzName=李四, fjsName=lfy] */}
Spring中的静态工厂与实例工厂相关推荐
- java手工注入bean_java相关:Spring中如何动态注入Bean实例教程
java相关:Spring中如何动态注入Bean实例教程 发布于 2020-3-8| 复制链接 摘记: 前言在Spring中提供了非常多的方式注入实例,但是由于在初始化顺序的不同,基于标注的注入方式, ...
- Spring中父子容器的实现实例
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Spri ...
- Spring中bean实例化的三种方式:默认构造、静态工厂、实例工厂
1. 默认构造方式:必须提供默认构造 <bean id="bean id" class="工厂全限定类名"></bean> 以Studn ...
- Spring中的静态代理和动态代理
一.什么是代理? 代理是一种设计模式,提供了对目标对象另外的访问方式,即通过代理对象访问目标对象.可以不修改目标对象,对目标对象功能进行拓展.在我们学习Spring的时候就会发现,AOP(面向切面编程 ...
- spring中load-time-weaver静态aop处理,基于aspectJ的静态aop处理
前面我们已经探讨过基于spring的动态aop处理 spring动态aop处理 spring同时也遵循了aop的标准,提供了静态aop的处理方式. spring的配置增加如下配置开启静态aop: &l ...
- spring hsqldb_在Spring中嵌入HSQLDB服务器实例
spring hsqldb 我一直在愉快地使用XAMPP进行开发,直到不得不将其托管在可通过Internet访问的某个地方,供客户端进行测试和使用. 我有一个仅具有384 RAM的VPS,并且需要快速 ...
- 在Spring中嵌入HSQLDB服务器实例
我一直在愉快地使用XAMPP进行开发,直到不得不将其托管在可通过Internet访问的某个地方,供客户端进行测试和使用. 我有一个仅具有384 RAM的VPS,并且需要快速找到一种方法,因此决定将XA ...
- Spring中的Bean配置、属性配置、装配内容详细叙述
文章目录 1.Bean的配置 1.1.配置方式 2.Bean的实例化 2.1.构造器实例化 2.2.静态工厂方式实例化 2.3.实例工厂方式实例化 3.Bean的作用域 3.1.作用域的种类 4.Be ...
- Spring中的9种设计模式汇总
戳蓝字"CSDN云计算"关注我们哦! 文章来自:Java和Android架构 1. 简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GO ...
最新文章
- 第3关:4位快速加法器设计
- 数字万用表的四位半,三位半都是什么意思?
- windows系统查找文件-通配符的使用
- 加密机组会 会议纪要
- 判定是否在词典中 java_检查字典中是否已存在给定键
- iphone全部机型_5G旗舰坚果R2再出发 1亿像素拍照出彩领跑四千价位档|像素|华为mate|iphone|手机...
- Atitit。监听键盘上下左右方向键事件java js jquery c#.net
- python程序如何执行死刑_哪些Python库让你相见恨晚?
- 2020年下半年软件设计师上午真题及答案解析(个人见解+网络解答+持续更新)
- 自制全铝CNC雕刻机全过程(完工篇)
- DWM1000 定位操作流程--[蓝点无限]
- android自定义日历代码,Android自定义日历Calender代码实现
- 数据包络分析法(DEA)_1
- 美食节、灯光节等线下展销会活动公众号文章推广链接如何做到不被微信屏蔽拦截?
- OpenCV - 10 开发一个视频切割成图片的软件
- 起底硅谷最神秘、估值最高的大数据公司:Palantir
- jQuery Fancybox插件介绍
- qq无法启动此程序计算机中丢失dll,Win7系统打开QQ提示丢失DLL文件怎么办
- cookies、sessions、token区别
- 华为鸿蒙操作系统全景解构