Spring framework简介
spring framework这个框架是spring项目中的核心项目,所有框架都依赖于这个框架.
它是一个一站式的开源框架,基础技术是IoC.
按官方文档主要分块为核心技术,测试,数据访问,Web,Integration
核心技术主要表现在Ioc容器,资源访问类Resource,校验,数据绑定和类型转换,Spring EL表达式,AOP
测试包含单元测试以及Integration测试
数据访问包含事务管理, DAO support, JDBC支持, ORM支持(Mybatis,Hibernate)
Web包含Spring MVC,WebSocket支持,其他MVC框架支持(Struts)
Integration是分布式项目会使用到的功能,不了解.
上图的每一个模块都对应了相当的jar包,所以使用某一模块必须把jar包依赖导入,
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>