SSH:Struct2 + Spring + Hibernate
SSM:SpringMvc + Spring + Mybatis
优点:
Spring就是一个轻量级的控制反转(IOC)和面向切面编程的框架。
1.Spring是一个开源的免费框架(容器)!
2.Spring是一个轻量级的、非入侵式的框架!
3.控制反转(IOC),面向切面编程(AOP)!
4.支持事物的处理,对框架整合的支持!
Spring七大模块
Spring boot:一个快速开发的脚手架,基于Spring boot可以快速开发微服务,约定大于配置
学习Spring boot的前提是完全掌握spring和SpringMVC,承上启下的作用
Spring cloud:基于Spring boot实现的
IOC本质
IOC操作Bean管理
1.什么是Bean管理
(0)Bean管理指的是两个操作
(1)Spring创建对象
(2)Spring注入属性
2.Bean管理操作有两种方式
(1)基于xml配置文件方式实现
(2)基于注解方式实现
IOC操作Bean管理(基于xml方式)
1.基于xml方式创建对象
(1)在spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象创建
(2)在bean标签有很多属性,介绍常用的属性
*id属性:唯一标识
*class属性:类全路径(包类路径)
(3)创建对象时候,默认执行无参构造方法完成对象创建
2.基于xml方式注入属性
(1)DI:依赖注入,就是注入属性
第一种注入方式:使用set方法进行注入
<!--2.set方法注入属性-->
<!-- <bean id="book" class="com.kpp.spring5.Book" p:bname="明朝那些事" p:bauthor="明月">-->
<!-- </bean>-->
<bean id="book" class="com.kpp.spring5.Book">
<property name="bname" value="hello"></property>
第二种注入方式:使用有参构造函数进行注入
<!--有参构造注入属性-->
<bean id="order" class="com.kpp.spring5.Order">
<constructor-arg name="oname" value="abc"></constructor-arg>
<constructor-arg name="address" value="china"></constructor-arg>
<!--<constructor-arg index="0" value=""></constructor-arg>-->
<!--0表示有参构造函数里面的第一个参数-->
</bean>
3.p名称空间注入
(1)添加p名称空间在配置文件中
xmlns:p="http://www.springframework.org/schema/p"
(2)
<bean id="book" class="com.kpp.spring5.Book" p:bname="明朝那些事" p:bauthor="明月"></bean>
IOC操作Bean管理(xml注入其他类型属性)
1.属性类型为自定义类
(1)ref
<bean id="userDaoImpl" class="com.kpp.spring5.DAO.UserDaoImpl"></bean>
<bean id="userService" class="com.kpp.spring5.service.UserService">
<!--注入userDao对象
name属性值:类里面属性名称
ref属性:创建的userDao对象的bean标签id值
-->
<property name="userDao" ref="userDaoImpl"></property>
</bean>
(2)内部bean
<!--内部bean-->
<bean id="emp" class="com.kpp.spring5.bean.Emp">
<!--设置两个普通属性-->
<property name="ename" value="lucky"></property>
<property name="gender" value="male"></property>
<!--设置对象类型属性-->
<property name="dept">
<bean id="dept" class="com.kpp.spring5.bean.Dept">
<property name="dname" value="kaifabu"></property>
</bean>
</property>
</bean>
(3)级联赋值
<bean id="emp" class="com.kpp.spring5.bean.Emp">
<!--设置两个普通属性-->
<property name="ename" value="lucky"></property>
<property name="gender" value="male"></property>
<!--级联赋值-->
<property name="dept" ref="dept"></property>
<property name="dept.dname" value="技术部"></property>
</bean>
<bean id="dept" class="com.kpp.spring5.bean.Dept">
<property name="dname" value="财务部"></property>
</bean>
<!--null值-->
<!-- <property name="bauthor">-->
<!-- <null/>-->
<!-- </property>-->
<!--属性值包含特殊符号
(1)把<>进行转义<>
(2)把带特殊符号的内容写到CDATA
-->
<property name="bauthor">
<value><![CDATA[<<nanjing>>]]></value>
</property>
数组,List,Map等属性注入
<!--集和类型属性的注入-->
<bean id="stu" class="com.kpp.collectiontype.Stu">
<!--数组类型属性的注入-->
<property name="course">
<array>
<value>java课程</value>
<value>数据库</value>
<value>数据结构</value>
</array>
</property>
<!--List类型属性的注入-->
<property name="list">
<list>
<value>kpp</value>
<value>zxy</value>
</list>
</property>
<!--Map类型属性的注入-->
<property name="maps">
<map>
<entry key="JAVA" value="25"></entry>
<entry key="MYSQL" value="44"></entry>
</map>
</property>
<!--Set类型属性的注入-->
<property name="sets">
<set>
<value>C语言</value>
<value>spring</value>
</set>
</property>
<!--List集和类型注入,值是对象-->
<property name="courseList">
<list>
<ref bean="course1"></ref>
<ref bean="course2"></ref>
<ref bean="course3"></ref>
</list>
</property>
</bean>
<!--创建多个course对象-->
<bean id="course1" class="com.kpp.collectiontype.Course">
<property name="cname" value="spring"></property>
</bean>
<bean id="course2" class="com.kpp.collectiontype.Course">
<property name="cname" value="java"></property>
</bean>
<bean id="course3" class="com.kpp.collectiontype.Course">
<property name="cname" value="mybaties"></property>
</bean>
util类型提取
(1)配置文件
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
https://www.springframework.org/schema/util/spring-util.xsd">
<!--提取list集和类型属性注入-->
<util:list id="bookist" >
<value>三国</value>
<value>西游</value>
<value>红楼梦</value>
</util:list>
<!--提取list集和类型属性注入使用-->
<bean id="book" class="com.kpp.collectiontype.Book">
<property name="bookList" ref="bookist"></property>
</bean>