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方法)