Spring框架——IOC 工厂方法
IoC 是典型的⼯厂模式,如何使⽤用⼯厂模式创建 bean, IoC 通过⼯厂模式创建 bean 有以下两种⽅式
xml
<?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="car" class="com.sunjian.factory.StaticCarFactory" factory-method="getCar"> <constructor-arg value="1"></constructor-arg> </bean> <!-- 实例工厂模式 --> <bean id="carFactory" class="com.sunjian.factory.InstanceCarFactory"></bean> <bean id="car2" factory-bean="carFactory" factory-method="getCar"> <constructor-arg value="2"></constructor-arg> </bean> </beans>
class
package com.sunjian.entity; public class Car { private Integer id; private String brand; public void setId(Integer id) { this.id = id; } public void setBrand(String brand) { this.brand = brand; } public Car(){ System.out.println("创建了Car对象"); } public Car(Integer id, String brand) { this.id = id; this.brand = brand; } @Override public String toString() { return "Car{" + "id=" + id + ", brand='" + brand + '\'' + '}'; } }
package com.sunjian.factory; import com.sunjian.entity.Car; import java.util.HashMap; import java.util.Map; /** * 实例工厂 * @author sunjian * @date 2020/3/14 14:43 */ public class InstanceCarFactory { private Map<Integer, Car> map; public InstanceCarFactory(){ map = new HashMap<Integer, Car>(); map.put(1, new Car(1, "起亚K2")); map.put(2, new Car(2, "起亚K5")); } public Car getCar(Integer id){ return map.get(id); } }
package com.sunjian.factory; import com.sunjian.entity.Car; import java.util.HashMap; import java.util.Map; /** * 静态工厂 * @author sunjian * @date 2020/3/14 14:38 */ public class StaticCarFactory { private static Map<Integer, Car> map; static { map = new HashMap<Integer, Car>(); map.put(1, new Car(1, "起亚K2")); map.put(2, new Car(2, "起亚K5")); } public static Car getCar(Integer id){ return map.get(id); } }
test class
package com.sunjian.test; import com.sunjian.entity.Car; import com.sunjian.factory.InstanceCarFactory; import com.sunjian.factory.StaticCarFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * @author sunjian * @date 2020/3/14 14:40 */ public class Test2 { public static void main(String[] args) { Car car = StaticCarFactory.getCar(1); Car car2 = StaticCarFactory.getCar(2); System.out.println(car); System.out.println(car2); InstanceCarFactory instanceCarFactory = new InstanceCarFactory(); Car car3 = instanceCarFactory.getCar(1); Car car4 = instanceCarFactory.getCar(2); System.out.println(car3); System.out.println(car4); ApplicationContext applicationContext = new ClassPathXmlApplicationContext("factory.xml"); Car car5 = (Car) applicationContext.getBean("car"); System.out.println(car5); } }
OK.
Spring框架——IOC 工厂方法的更多相关文章
- spring框架中工厂方法的创建和销毁
1.编写接口UserSerivce: public interface UserService { public void sayHello(); } 2.编写实实现接口的方法,在该方法中除了要实现接 ...
- Spring框架IOC容器和AOP解析 非常 有用
Spring框架IOC容器和AOP解析 主要分析点: 一.Spring开源框架的简介 二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面 ...
- 自己动手写Spring框架--IOC、MVC
对于一名Java开发人员,我相信没有人不知道 Spring 框架,而且也能够轻松就说出 Spring 的特性-- IOC.MVC.AOP.ORM(batis). 下面我想简单介绍一下我写的轻量级的 S ...
- Spring框架IOC容器和AOP解析
主要分析点: 一.Spring开源框架的简介 二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面向切面编程(AOP)和事务管理配置 一.S ...
- spring框架--IOC容器,依赖注入
思考: 1. 对象创建创建能否写死? 2. 对象创建细节 对象数量 action 多个 [维护成员变量] service 一个 [不需要维护公共变量] dao 一个 [不需要维护 ...
- Spring框架---IOC装配Bean
IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ...
- Spring框架IOC和AOP介绍
说明:本文部分内容参考其他优秀博客后结合自己实战例子改编如下 Spring框架是个轻量级的Java EE框架.所谓轻量级,是指不依赖于容器就能运行的.Struts.Hibernate也是轻量级的. 轻 ...
- Spring框架——IOC&DI
Spring Spring 目标 内容 Spring与web整合的原理 Spring 中包含的关键特性 Spring架构图 企业级框架 企业级系统 IOCDI IOC DI IOC和DI 为什么使用依 ...
- Spring框架IOC,DI概念理解
1.什么是框架? 框架是一种重复使用的解决方案,针对某个软件开发的问题提出的. Spring框架,它是一个大型的包含很多重复使用的某个领域的解决方案. Spring的理念:不要重复发明轮子. 2.Sp ...
随机推荐
- 转:Zabbix-3.0.x使用OneAlert发送告警
转自: http://blog.sina.com.cn/s/blog_87113ac20102w7il.html ( 标签: onealert 分类: zab OneAlert 是国内首个 Saa ...
- excel中ppmt/pmt/ipmt的计算方式
参考来源: https://www.experts-exchange.com/articles/1948/A-Guide-to-the-PMT-FV-IPMT-and-PPMT-Functions.h ...
- js事件节流
背景:在监听浏览器滚动条的scroll事件时该事件会触发很多次,这样当快速滚动时会有很差的性能,所以要限制事件触发的频率,可以防抖和节流,这里我记录简单的节流方法 <!DOCTYPE html& ...
- the way of hardware design study
1.器件 主要分类 1.MCU2.DSP3.FPGA4.Embedded5.System on Chip MCU MCU俗称单片机,通常无操作系统,用于简单的控制,如电梯,空调等. DSP DSP叫做 ...
- JSP Connect Database
JDBC简介 在Java技术中,访问数据库的技术叫做JDBC,它提供了一系列的API,让Java语言编写的代码连接数据库,对数据库进行添加.删除.修改和查询. JDBC相关的API存在java.sql ...
- github 下载部分代码
作者:知乎用户链接:https://www.zhihu.com/question/25369412/answer/96174755来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- 第12章 Reference-RIL运行框架
Reference-RIL完成两部分处理逻辑: 与LibRIL交互完成RIL消息的处理. 与Modem通信模块交互完成AT命令的执行. Reference-RIL的运行机制 主要涉及以下几个方面: R ...
- linux常用命令使用指南
<软件自动化测试开发>出版啦 1 系统相关 useradd/userdel 添加用户/删除用户 su 切换用户命令 ls 用于查看所有文件夹的命令 列出目录内容 ...
- git指令-版本回退
git指令-版本回退 回顾: 1. 修改文件 2. 添加到暂存区并提交 回顾对readme共三次修改: 1. 版本1:wrote a readme file Git is a version cont ...
- 解决WebMvcConfigurer下的addViewControllers无法找到制定页面
解决WebMvcConfigurer下的addViewControllers无法找到制定页面 这种都已经配置了拦截跳转,但无效的原因是,没有加载thymeleaf依赖 <dependency&g ...