Spring知识(一)

  • 什么是Spring

在这里插入图片描述

  • Spring叫做SE/EE开发的一站式框架

一站式框架:有EE开发的每一层解决方案。
WEB层:SpringMVC
Service层:Spring的Bean管理,Spring声明式事务
DAO层:Spring的JDBC模板,Spring的ORM模块

  • Spring的优点

在这里插入图片描述

  • Spring的版本

Spring3.x和Spring4.x

Spring的入门(IOC)

  • IOC:inversion of controller(控制反转)

控制反转:将对象的创建权反转给(交给)Spring

下载Spring开发包

官网:http://spring.io/

解压spring的开发包

解压后的目录

docs :spring的开发规范和API
libs :spring的开发的jar和源码
schema :spring的配置文的约束

创建web项目,引入jar包

在这里插入图片描述
在这里插入图片描述

创建接口和类

在这里插入图片描述

在这里插入图片描述
问题
如果底层的实现切换了,需要修改源代码,能不能不修改程序源代码对程序进行扩展?

在这里插入图片描述

将实现类交给spring管理

  • 在spring的解压路径下spring-framework-4.2.4RELEASE\docs\spring-framework-reference\html\xsd-configuration.html

在这里插入图片描述

编写测试类

在这里插入图片描述

IOC和DI(重要)

  • IOC:控制反转,将对象的创建权反转给了Spring

DI:依赖注入,前提必须有IOC的环境,spring管理这个类的时候的依赖的属性注入(设置)进来
面向对象的时候

  • 依赖:

1Class A{ 2 3} 4 5Class B{ 6 public void xxx(A a){ 7 8} 9} 10 11
  • 继承:is-a

1Class A{ 2 3} 4Class B extends A{ 5 6} 7 8
  • 聚合:has-a

spring 的工厂类

spring的工厂类结构图
在这里插入图片描述
applicationContext继承BeanFactory

  • BeanFactory:老版本的工厂类

BeanFactory:调用getBean的时候,才会生成类的实例

  • ApplicationContext:新版的新版工厂类

ClassPathXmlApplicationContext:加载类路径下的配置文件
FileSystemXmlApplicationContext:加载文件系统下的配置文件

spring的配置

  • XML的提示配置
  • Schame的配置

在这里插入图片描述

Bean的相关配置

  • 《bean》表掐你的ID和name的配置
  1. id: 使用了约束中的唯一约束
  2. name:没有使用约束中的唯一约束(理论上是可以重复的,但是实际开发中是不能重复),里面可以出现特殊字符

spring和Struts1框架整合的时候
<bean name="/user" class="" /》

  • Bean的生命周期的配置(了解)
  1. init-method :Bean被初始化的时候执行的方法
  2. destroy-method :Bean被销毁的时候执行的方法(Bean是单例创建,工厂关闭)

Bean的作用范围的配置(重点)

  • scope :Bean的作用范围

singletom :默认的,spring采用单例模式创建这个对象
prototype :多例模式。
request :spring创建这个类,应用在web项目中,创建后将这个类存入request域中
session :spring创建这个类,应用在web项目中,创建后将这个类存入session域中
globalsession :应用在web项目中,必须在porlet环境下使用

Spring的Bean的实例化方式(了解)

Bean已经都交给了Sping管理,spring创建这些类的时候,有几种方式:

  • 无参构造方法的方式(默认)
  • 编写类

在这里插入图片描述

  • 编写配置

在这里插入图片描述

静态工厂实例化的方式

  • 编写Bean2的静态工厂实例化的方式

在这里插入图片描述

  • 配置

在这里插入图片描述

实例工厂实例化

  • Bean3的实例工厂

在这里插入图片描述

  • 配置

在这里插入图片描述

spring的属性注入

  • 构造方法的属性注入

在这里插入图片描述

set方法的方式的属性注入

  • set方法的方式属性注入

在这里插入图片描述

  • set方法设置对象类型的属性

在这里插入图片描述

P名称空间的属性注入

  • 通过引入P名称空间完成属性的注入

写法:

普通属性 p:属性名 = “值”
对象属性 p:属性名-ref=“值”

  • p名称空间的引用

在这里插入图片描述

  • 使用p名称空间

在这里插入图片描述

SpEL的属性注入(spring3.0以后)

  • SpEL:Spring Expression Language,Spring的表达式语言

语法
#{SpEL}
在这里插入图片描述

集合类型属性注入(了解)

  • 配置

1<!-- Spring的集合属性的注入============================ --> 2 <!-- 注入数组类型 --> 3 <bean id="collectionBean" class="com.itheima.spring.demo5.CollectionBean"> 4 <!-- 数组类型 --> 5 <property name="arrs"> 6 <list> 7 <value>王东</value> 8 <value>赵洪</value> 9 <value>李冠希</value> 10 </list> 11 </property> 12 13 <!-- 注入list集合 --> 14 <property name="list"> 15 <list> 16 <value>李兵</value> 17 <value>赵如何</value> 18 <value>邓凤</value> 19 </list> 20 </property> 21 22 <!-- 注入set集合 --> 23 <property name="set"> 24 <set> 25 <value>aaa</value> 26 <value>bbb</value> 27 <value>ccc</value> 28 </set> 29 </property> 30 31 <!-- 注入Map集合 --> 32 <property name="map"> 33 <map> 34 <entry key="aaa" value="111"/> 35 <entry key="bbb" value="222"/> 36 <entry key="ccc" value="333"/> 37 </map> 38 </property> 39 </bean> 40 41

分模块开发

  • 在加载配置文件的时候,加载多个

在这里插入图片描述

  • 在配置文件中引入多个配置文件

在这里插入图片描述

实际用途

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 两者结合

XML管理Bean,注解完成属性注入

代码交流 2021