1. Spring介绍
1.1 简介
1.1.1概括:
的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。、
1.1.2发展过程
●2002, 首次推出了Spring框架的雏形: interface21框架!
●Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版。
●Rod Johnson,Spring Framework创始人, 著名作者。很难想象Rod Johnson的学历, 真的让好多人大吃一惊,他是悉尼大学的博士,然而他的专业不是计算机,而是音乐学。
1.1.3 Spring 理念
使现有的技术更加容易使用,本身是-个大杂烩,整合了现有的技术框架!
1.1.4 常用框架
●SSH : Struct2 + Spring + Hibernate
●SSM: SpringMvc + Spring + Mybatis!
1.1.5 下载地址
- 官网: https://spring.io/projects/spring-framework#overview
- 官方下载地址: htp://repo.spring.io/release/org/springframework/spring
- GitHub: htps:/github.com/spring:projects/spring.framework
<!-- https ://mvnrepository. com/artifact/org. springframework/spring-webmvc -->
<dependency>
<groupId>org. springframework</groupId>
<artifactId>spring-webmvc </artifactId>
<version>5. 2|. 0.RELEASE</version>
</dependency>
<!-- https://mvnrepository. com/artifact/org. springframework/spring-webmvc -->
<dependency>
<groupId>org. springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.0. RELEASE</version>
</ dependency>
1.2 优点
- Spring是一 个开源的免费的框架(容器) !
- Spring是一 一个轻量级的、非入侵式的框架!
- 控制反转(I0C) ,面向切面编程(AOP) !
- 支持事务的处理,对框架整合的支持!
总结一句话: Spring就是-一个轻量级的控制反转(IoC) 和面向切面编程的框架!
1.3 组成
1.3.1 Spring 的七大模块
详解 :
核心容器(Spring Code)
概念
1.是Spring的核心容器,提供了Spring框架的基本功能;
2.此模块包含的BeanFactory类是Spring的核心类,负责产生和管理Bean,是工程模式的实现;
3.采用Factory(工厂模式)实现了IOC(控制反转)将应用的配置和依赖性规范与实际的应用程序代码分开;
4.Spring以bean的方式组织和管理Java应用中发各个组件及其关系。
应用上下文(Spring Context)
概念
1.是一个配置文件,向Spring框架提供上下文信息;
2.SpringContext模块继承BeanFactory类,添加了事件处理、国际化、资源装载、透明装载、以及数据校验等功能;
3.还提供了框架式的Bean的访问方式和企业级的功能,如JNDI访问,支持EJB、远程调用、继承模板框架、Email和定时任务调度等;
面向切面编程(Spring AOP)
概念
1.Spring AOP直接将面向方面的编程功能集成到了Spring框架中,所以很容易的使Spring框架管理的任何对象支持AOP(Spring集成了所有AOP功能。通过事务管理可以使任意Spring管理的对象AOP化);
2.Spring AOP为基于Spring的应用程序中的对象提供了事务管理服务;
3.通过使用Spring AOP,不用依赖EJB组件,就可以将声明性事务管集成到应用程序中。
JDBC和DAO模块(Spring DAO)
概念
1.DAO(DataAccessObject)模式思想是将业务逻辑代码与数据库交互代码分离,降低两者耦合;
2.通过DAO模式可以使结构变得更为清晰,代码更为简;
3.DAO模块中的JDBC的抽象层,提供了有意义的异常层次结构,用该结构来管理异常处理,和不同数据库供应商所抛出的错误信息;
4.异常层次结构简化了数据库厂商的异常错误(不再从SQLException继承大批代码),极大的降低了需要编写的代码数量,并且提供了对声明式事务和编程式事务的支持;
对象实体映射(Spring ORM)
概念:
1.SpringORM模块提供了对现有ORM框架的支持;
提供了ORM对象的关系工具,其中包括了Hibernate、JDO和 IBatis SQL Map等,所有的这些都遵从Spring的通用事务和DAO异常层次结构;
2.注意这里Spring是提供各类的接口(support),目前比较流行的下层数据库封闭映射框架,如ibatis,Hibernate等;
Web模块(Spring Web)
概念:
1.此模块建立在SpringContext基础之上,提供了Servlet监听器的Context和Web应用的上下文;
2.对现有的Web框架,如JSF、Tapestry、Structs等提供了集成;
3.SpringWeb模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
MVC模块(Spring Web MVC)
概念
1.SpringWebMVC模块建立在Spring核心功能之上,拥有Spring框架的所有特性,能够适应多种多视图、模板技术、国际化和验证服务,实现控制逻辑和业务逻辑的清晰分离;
2.通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI;
3.MVC模型:
3.1 Servlet控制器为应用程序提供了一个进行前-后端处理的中枢。一方面为输入数据的验证、身份认证、日志及实现国际化编程提供了一个合适的切入点;另一方面也提供了将业务逻辑从JSP文件剥离的可能;
3.2 业务逻辑从JSP页面分离后,JSP文件蜕变成一个单纯完成显示任务的东西,这就是常说的View;
3.3 而独立出来的事务逻辑变成人们常说的Model,再加上控制器Control本身,就构成了MVC模式
1.3.2 Sprinp理解扩展
-
Spring Boot
。一个快速开发的脚手架。
。基于SpringBoot可以快速的开发单个微服务。
。约定大于配置! -
Spring Cloud
。SpringCloud 是基于SpringBoot实现的。
2.IoC理论
控制反转loC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法。没有IoC的程序中,我们使用面向对象编程,对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了。
采用XML方式配置Bean的时候,Bean的定义信息 是和实现分离的,而采用注解的方式可以把两者合为-体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。
控制反转是一 种通过描述(XML或注解) 并通过第三方去生产或获取特定对象的方式。 在Spring中实现控制反转的是IoC容器,其实现方法是依赖注入(Dependency Injection,DI)。
2.1使用spring创建对象
bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="hello" class="com.zzp.pojo.hello">
<property name="str" value="hello"></property>
</bean>
</beans>
hello类
package com.zzp.pojo;
public class hello {
private String str;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
@Override
public String toString() {
return "hello{" +
"str='" + str + '\'' +
'}';
}
}
mytest
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Mytest {
public static void main(String[] args) {
//获取spring的上下文对象
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
//我们的对象现在都在spring中管理了,我们要使用,直接去里面取出来
Object hello = context.getBean("hello");
System.out.println(hello.toString());
}
}
结果:
hello{str='hello'}
2.1.1 控制翻转
上面的过程就是控制翻转
- 控制:谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的.
- 反转:程序本身不创建对象,而变成被动的接收对象.
- 依赖注入:就是利用set方法来进行注入的.
- IOC是一-种编程思想,由主动的编程变成被动的接收.可以通过newClassPathXmlApplicationContext去浏览一下底层源码。.
OK ,到了现在,我们彻底不用再程序中去改动了,要实现不同的操作,只需要在xmI配置文件中进行修改,所谓的IoC,- -句话搞定 :对象由Spring来创建,管理,装配!