框架应用:Spring framework (一) - IoC技术
IoC概念以及目标
IoC就是让原本你自己管理的对象交由容器来进行管理,其主要的目的是松耦合.
IoC发展史
既然IoC的目标是为了松耦合,那它怎么做到的?
最后目标:降低对象之间的耦合度,IoC技术加入了配置把编码中对象的耦合度降低了.
IoC的底层原理
IoC底层使用的技术包括:
(1)xml配置文件
(2)dom4j解决xml
(3)工厂设计模式
(4)反射
IoC应用入门
一.导入jar包
IoC是Spring framework的基础技术,所以需要导入基础包;
二.创建类,在类里面创建方法
需要创建交与容器的类模板(拥有getter和setter的POJO类)
三.创建spring配置文件,配置创建类
(1)spring的核心配置文件名称和位置不是固定的,
官方推荐放置于src下面,命名为applicationContext.xml
(2)引入schema约束
(3)配置对象创建
四.测试对象创建
xml配置文件头部提示错误
解决方法是把schema约束引入spring,把约束文件引入到spring中.
IoC的三种配置管理方式
xml
实例化的三种方式
第一种使用类无参构造(重点)
第二种使用静态工厂来进行实例化
第三种使用实例工厂创建
bean标签常用的属性
常用属性有id, class, name, scope
id用于创建标识
class键入类的全路径名,引入模板类
name和id功能一致,但name允许包含特殊字符
scope用于指定创建类的方式以及其使用范围,参数如下
-singleton 单例创建对象,也就是始终都复用同一个对象,不会进行第二轮的创建
-prototype 每次创建都会创建一个新的对象
-request 创建对象并放置到request域中
-session 创建对象并放置到session域中
-globalSession 用于实现单点登录功能,比如百度下有百度云,百度翻译,百度相册之类多个应用,但是你只要登录上一个位置,多个位置都可以使用登录信息,这就是单点登录;这个参数基本不会使用,因为有一种就redis的技术更好地实现了这种功能.
属性注入
属性注入三种方式
set方法注入属性,其中包含基础属性注入,对象属性注入,复合属性注入
基础属性注入
对象属性注入
复合属性的注入
1.数组
2.list集合
3.map集合
4.properties
<bean id="person" class="com.harry.ioc.test"> <!-- 数组 --> <property name="arrs"> <list> <value>引用名1</value> <value>引用名2</value> <value>引用名3</value> </list> </property> <!-- list --> <property name="list"> <list> <value>引用名4</value> <value>引用名5</value> <value>引用名6</value> </list> </property> <!-- map --> <property name="map"> <map> <entry key="aa" value="引用名7"></entry> <entry key="bb" value="引用名8"></entry> <entry key="cc" value="引用名9"></entry> </map> </property> <!-- properties --> <property name="properties"> <props> <prop key="driverclass">com.mysql.jdbc.Driver</prop> <prop key="username">root</prop> </props> </property> </bean>
复合属性注入
有参构造函数注入属性
javaConfig类
注解
一.注解介绍
1.代码里特殊标记,使用注解可以完成功能
2.注解写法 @(属性名称=属性值)
3.注解可以使用在类,方法和属性之上
二.spring的注解开发导入包
1.core包
2.aop包
三.创建类和方法
四.创建spring配置文件引入新约束,开启注解扫描
五.注解创建对象
1.使用注解标记类
2.创建对象有四个注解标记
3.创建对象方式,单例还是多例
六.注解注入属性
1.创建service类,创建dao类
2.在service类使用注解注入dao
方式一.采用自动装载@Autowired
方式二.采用@Resource获取特定名称对象
七.配置文件和注解混合使用
1.配置文件创建对象注入容器
2.使用注解让容器实现属性注入
IoC和DI的区别所在
很多人认为IoC和DI是一个事物的两种说法,其实之间存在着细微的不同.
-IoC,控制反转,将对象交由容器进行管理;
-DI,依赖注入,将属性注入于对象之中;
-DI是依赖于控制反转技术的,如果使用IoC技术也就无法使用注入功能.
Spring整合web项目的原理
1 加载spring核心配置文件,
2 实现思想:把加载配置文件和创建对象过程,在服务器启动时候完成
3 实现原理
(1)ServletContext对象
(2)监听器
(3)具体使用:
- 在服务器启动时候,为每个项目创建一个ServletContext对象
- 在ServletContext对象创建时候,使用监听器可以具体到ServletContext对象在什么时候创建
- 使用监听器监听到ServletContext对象创建时候,
-- 加载spring配置文件,把配置文件配置对象创建
-- 把创建出来的对象放到ServletContext域对象里面(setAttribute方法)
- 获取对象时候,到ServletContext域得到 (getAttribute方法)
框架应用:Spring framework (一) - IoC技术的更多相关文章
- Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->使用spring framework的IoC容器功能----->方法一:使用XML文件定义beans之间的依赖注入关系
XML-based configuration metadata(使用XML文件定义beans之间的依赖注入关系) 第一部分 编程思路概述 step1,在XML文件中定义各个bean之间的依赖关系. ...
- Spring框架简介 Spring Framework Introduction
Introduction The Spring Framework provides a comprehensive programming and configuration model for m ...
- 框架应用:Spring framework (二) - AOP技术
基础概念 线程中的方法栈 java程序虚拟机启动时会载入程序码,虚拟机会为每一条正在运行的线程生成一个方法调用栈,线程以方法运行为执行单位. AOP概念以及目标 AOP是面向切面编程,其实就是在不修改 ...
- Spring Framework Part2 IOC
spring serious of blog edit by 马士兵教育 IoC概念 IoC是一个概念,是一种思想,其实现方式多种多样.当前比较流行的实现方式之一是DI. 基于XML的DI Appli ...
- Spring Framework之IoC容器
Spring IoC 概述 问题 1.什么是依赖倒置? 2.什么是控制反转? 3.什么是依赖注入? 4.它们之间的关系是怎样的? 5.优点有哪些? 依赖倒置原则 (Dependency Inversi ...
- Spring Framework Part3 IoC and Dynamic Proxy
spring serious of blog edit by 马士兵教育 Maven方式创建Spring工程 工程创建 1.新建项目 选择Maven Project 2.勾选 Create a sim ...
- JavaIOC框架篇之Spring Framework
欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...
- 译:Spring框架参考文档之IoC容器(未完成)
6. IoC容器 6.1 Spring IoC容器和bean介绍 这一章节介绍了Spring框架的控制反转(IoC)实现的原理.IoC也被称作依赖注入(DI).It is a process wher ...
- Spring框架学习(2)IOC学习
内容源自:IOC理解 spring ioc注入的三种方式 ioc工厂bean深入理解 耦合性,在java中表现为类之间的关系,耦合性强说明类之间的依赖关系强: 侵入性:框架对代码的侵入: 在传统 ...
随机推荐
- JSON以及Java转换JSON的方法(前后端常用处理方法)
)); map.put("arr", new String[] { "a", "b" }); map.put("func" ...
- - Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as <script>, as they will not be parsed.
vue.js报错如下: - Templates should only be responsible for mapping the state to the UI. Avoid placing ta ...
- linux各个文件夹的用途
英文: /bin: where binary programs live. /boot: the special programs that start the system when you tur ...
- BotVS开发基础—2.2 下限价单 交易
代码 import json def main(): Log("ORDER_STATE_PENDING:", ORDER_STATE_PENDING, ", ORDER_ ...
- 四种JavaScript隐式类型转换的总结
一般存在四种情况,JavaScript会对变量的数据类型进行转换. 目录 * if中的条件会被自动转为Boolean类型 * 会被转为false的数据 * 会被转为true的数据 * 参与+运算都会被 ...
- Firefox插件推荐
介绍一下我常用的几个Firefox插件,不一定适合所有人. 图中所示4个插件是我仅有的4个addons,除了stylish,其他几个已经伴随我多年. 1.Adblock Plus(强烈推荐) 广告拦截 ...
- jQuery绑定事物处理器
绑定与移除1..bind() 绑定事件可以有2个或者3个参数:第一个参数为事件类型 第二个参数为处理函数 第三个为布尔类型 on()事件代替2..delegate() 事件委托,三个参数,第一个为选择 ...
- MongoDB导入导出以及数据库备份
-------------------MongoDB数据导入与导出------------------- 1.导出工具:mongoexport 1.概念: mongoDB中的m ...
- 最新Windows下Redis集群
实现简单的Windows下Redis集群配置,以下是配置过程中出现的几个问题: [1]逐个启动7001 7002 7003 7004 7005 7006节点时,出现createing server T ...
- SQL 软解析和硬解析详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt329 当客户端进程,将SQL语句通过监听器发送到Oracle时, 会触发一个 ...