Spring工厂常识
- 环境搭建
- 导入Sring对应的jar包
- 导入Spring依赖的commons-loggin包
- 导入log4j.properties在src下
- 导入ApplicationContext.xml在任意目录下
- 是一个轻量级的企业开发框架
- 核心:IOC , AOP编程
- IOC:也就是inverse of control 控制反转
- 就是讲创建对象的权利转移到工厂中,从而实现解耦合和对于jdk功能的增强
- 对于常见的Spring工厂
- 本地使用的Spring工厂类 ClassPathXmlApplicationContext();
- 实际应用
- 对于单个配置中
- 控制对象创建的次数:单个:songleton
- 多个:protoprototype
- 如何使用
- 将对应的配置写入applicationContext.xml中
<?xml version="1.0" encoding="UTF-8"?> <beans ><bean id="us" class="com.youyi.test.UserServiceimpl" scope="prototype"></bean><--比如这里就是id就是相当于引用名,class就是实际上的全类名,也就是指向的类,体现了一部分解耦合--><!--这里的关系依然是反射解决:通过id找到对应的class找到全类名生成对应的类对象再newInstance生成对应的类的对象--> </beans>
- 对应实际java的使用
import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class BeanTest1 {public static void main(String[] args) {//这里就是创建spring工厂的本地实现类ClassPathXmlApplicationContext cpc = new ClassPathXmlApplicationContext("classpath:/com/youyi/test/applicationContext.xml");Object bean = cpc.getBean("us"); //通过实际的引用名去找到对应的classSystem.out.println(bean);Object bean2 = cpc.getBean("us"); //如果是单实例的选项的话这里bean和bean2打印出来的地址是一样的.但是如果是prototype的话二者属于多实例创建并不是同一个实例就不一样System.out.println(bean2);} }
<!--这里是xml文件还是配置的时候注意的地方:--><bean id="addressa" class="com.youyi.test3.Address"><property name="city" value="洛阳"></property><property name="zipCode" value="471003"></property></bean><!--对象当属性要先配置好这个对象放到工厂里之后ref引用就好--><bean id="user" class="com.youyi.test3.User"><property name="username" value="zhangshun"></property><property name="age" value="15"></property>//这是String和基本数据类型和包装类的写法<property name="alive" value="true"></property><property name="hobby">//这是集合和数组的写法<list><value>"抽烟"</value><value>"喝酒"</value><value>"烫头"</value><value>"爱老婆"</value></list></property><property name="friends">//这是map集合<map><entry key="1" value="张思梦"></entry><entry key="2" value="杜梦媛"></entry><entry key="3" value="嫣然"></entry></map></property><property name="dateSourse">//这是properties文件对应的写法<props><prop key="c1">"连接池1"</prop><prop key="c2">"连接池2"</prop></props></property><property name="address" ref="addressa"></property>//这就是对象当属性的时候用ref指向的形式</bean>
- 将对应的配置写入applicationContext.xml中
- 对于单个配置中
转载于:https://www.cnblogs.com/newzhangshun/p/10096619.html
Spring工厂常识相关推荐
- Spring 工厂的相关的方法
名词解释:Spring 工厂创建的对象,叫做 bean 或者 组件 (componet): getBean:传入 id值 和 类名 获取对象,不需要强制类型转换. // 通过这种方式获得对象,就不需要 ...
- 【Spring 工厂】反转控制与依赖注入、Spring工厂创建复杂对象3种方式
反转控制与依赖注入 反转控制 与 依赖注入 反转控制(IOC Inverse of Control) 依赖注入 (Dependency Injection - DI) Spring工厂创建复杂对象(3 ...
- 【Spring 工厂】注入详解 — Set注入(JDK内置类型,用户自定义类型)、构造注入(重载)
Spring 注入(Injection) 什么是注入? 为什么要注入? 如何进行注入[开发步骤] Spring注入的原理分析(简易版) Set注入详解 JDK内置类型 String+8种基本类型 数组 ...
- 【Spring 工厂】工厂设计模式、第一个Spring程序细节分析、整合日志框架
Spring 引言 什么是 Spring? 工厂设计模式 简单工厂的设计 通用工厂的设计 通用工厂的使用方式 第一个 Spring 程序 环境搭建 Spring 的核心API 程序开发 细节分析 Sp ...
- Java Spring 工厂类 BeanFactoryAware基本使用 亲测
Java Spring 工厂类 BeanFactoryAware基本使用 1. BaseFactory.java 实现 Spring工厂接口 BeanFactoryAware 2. SearchFac ...
- Alian解读SpringBoot 2.6.0 源码(一):SpringApplication对象创建(Spring工厂加载机制)
目录 一.背景 二.SpringApplication实例化 2.1.实例化方法入口 2.2.推断应用程序类型 2.3.Spring工厂加载机制 2.3.1.获取Spring工厂实例(重要) 2.3. ...
- 【Spring 工厂,西安富士通Java笔试题
代理 模板 策略 什么是设计模式? ⼴义概念:面向对象设计中,解决特定问题的经典代码. 狭义概念:GOF4人帮定义的23种设计模式:工厂.适配器.装饰器.门面.代理.模板- 工厂设计模式 什么是工厂设 ...
- 使用Spring工厂模式管理多个类实现同一个接口
最近小白在看 Spring IOC 和 AOP 源码时发现 Spring 中有很多类都实现了同一个接口,像下面这种 public interface AopProxy {Object getProxy ...
- 浅谈Spring IOC和DI及Spring工厂类
浅谈Spring IOC和DI及Spring的工厂类 文章目录 浅谈Spring IOC和DI及Spring的工厂类 一. IOC 1.什么是IOC 2.为什么使用IOC 传统开发模式的弊端 3. 使 ...
最新文章
- HDU 1875 畅通工程再续
- Java ClassLoader setDefaultAssertionStatus()方法与示例
- 从Google Quick Draw涂鸦观察不同文化属性
- table中怎么设置两行间距
- Babel下的ES6兼容性与规范
- linux中mysql群集_阅读无群集可用性组中的Scale可用性组
- 百度发起机器阅读理解竞赛,提供中文数据集,获胜团队奖10万
- PHP反序列化漏洞(什么是反序列化漏洞及操作)
- asp.net后台操作javascript:confirm返回值
- matlab在二值图像上画曲线_数字图像处理:Image Printing Program Based on Halftoning
- 基于app_inventor的手机aap与单片机蓝牙互联教程
- 图扑数字孪生数据中心机房,助力产业绿色低碳转型
- BurpSuite系列(四)----Scanner模块(漏洞扫描)
- 上滑解锁流程 - 安卓R
- 计算机科学与技术职员考试,在职计算机科学与技术考试科目
- 计算机大纲中的应用,计算机的应用论文提纲模板范本 计算机的应用论文大纲怎么写...
- 【RFC5382 TCP 的 NAT 行为要求】(翻译)
- 【小程序开发之文章详情页面的设计】文章详情页面如何布局
- matlab循迹小车,Arduino智能小车系列教程6——循迹小车
- swoole基础之http-server
热门文章
- 【Live555】live555源码详解(二):BasicHashTable、DelayQueue、HandlerSet
- linux c实现函数回调,c语言实现linux抓包
- python 二进制流转图片_Python零基础入门到精通-5.1节:Python程序的执行过程
- python图像相似度识别_一个用SIFT特征比较图像相似度的python小程序
- java c++的区别_Java语言与C、C++之间的区别?
- 1h2g云服务器做网站,云服务器1h2g
- matlab 迭代 混沌与分形实验报告,实验四 函数的迭代混沌与分形.doc
- 【Linux】Linux computer文件夹下各种文件的作用
- 谷歌浏览器打不开设置等页面
- 动态网页项目(Dynamic Web Project)2.5和3.0版本的差异