Spring
Spirng是一个企业级开发框架,是软件设计层面的框架,优势在于可以将应用程序进行分层,开发者可以自主选择组件。
Spring提供了各个层面的解决方案:
MVC:Strts2、Spring MVC
ORM:Hibernate、MyBatis、Spirng Data
Spring两大核心机制:IoC(控制反转)、AOP(面向切面)
Spirng的优点:
-
低侵入式设计
-
独立于各个应用服务器
-
依赖注入特性将组件关系透明化,降低了耦合度
-
面向切面编程特性允许将通用任务进行集中式处理
-
与第三方框架的良好整合
Spring体系结构:

-
核心容器
-
Spring上下文
-
Spirng AOP
-
Spirng DAO
-
Spring ORM
-
Spirng Web模块
-
Spring MVC框架
总结:Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。
Spring IoC概述与简单使用
-
什么是控制反转
在传统开发中,需要调用对象时,通常由调用者来创建被调用者的实例,即对象是由调用者主动new出来的。
但在Spring框架中创建对象的工作不再由调用者完成,而是交给Ioc容器来创建,再推送给调用者,整个流程完成反转,所以是控制反转。
-
IOC的简单使用
-
创建maven工程,导入相关依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.10.RELEASE</version>
</dependency>这里只需要导入这一个依赖包就够了,因为这个依赖的导入会导致所有spring相关的依赖都被导入,下边是依赖图
![]()
-
创建实体类
package com.jarreet.pojo;
import lombok.Data;
-
在配置文件中添加需要管理的对象,XML格式的配置 文件,文件名可自定义
-
从IOC中获取对象
测试结果:
![]()
-
Spring IoC配置文件详解
-
spring ioc 通过配置 <bean></bean> 标签来完成对象的管理
-
id:对象名
-
class:对象的模板类(所有交给ioc容器来管理的类必须有无参构造函数,因为Spring底层是通过反射机制来创建对象的,调用的是无参构造)
-
-
对象的成员变量通过<property></property>标签完成赋值
-
name:成员变量名
-
value:成员变量的值(基本数据类型,String)
-
ref:将ioc中的另外一个bean赋给当前的成员变量(DI:依赖注入)
<bean id="student" class="com.jarreet.pojo.Student">
<!-- 使用property完成属性注入
name:类里面属性名称
value:向属性注入的具体的值(基本数据类型)
ref:引用Spring容器中创建好的对象
-->
<property name="id" value="1"/>
<property name="name" value="Jarreet"/>
<property name="age" value="22"/>
<!-- 将address注入 -->
<property name="address" ref="address"/>
</bean>
<bean id="address" class="com.jarreet.pojo.Address">
<property name="id" value="1"/>
<property name="name" value="FuZhou"/>
</bean>
-
-
给bean注入集合
-
修改实体类
package com.jarreet.pojo;
import lombok.Data;
import java.util.List;
-
修改xml
<!-- 1 配置Student对象创建 -->
<!-- 2 set方法注入属性 -->
<bean id="student" class="com.jarreet.pojo.Student">
<!-- 使用property完成属性注入
name:类里面属性名称
value:向属性注入的具体的值(基本数据类型)
ref:引用Spring容器中创建好的对象
-->
<property name="id" value="1"/>
<property name="name" value="Jarreet"/>
<property name="age" value="22"/>
<property name="addresses">
<list>
<ref bean="address1"></ref>
<ref bean="address2"></ref>
</list>
<!--
此处如果不是注入集合,二是注入数组、Map、Set、Properties、Null也是类似的方法,知识标签不同
1、注入数组,使用
<array>
<value></value>
</array>
2、注入Map,使用
<map>
<entry key="" value=""/>
</map>
3、注入Set,使用
<set>
<value></value>
</set>
4、注入Properties,使用
<props>
<prop key=""></prop>
</props>
5、注入Null
<property name="wife"><null/></property>
-->
</property>
</bean>
<bean id="address1" class="com.jarreet.pojo.Address">
<property name="id" value="1"/>
<
-


