Spring
学习文档查找
project - Spring Framework - learn - reference Doc.
project
Spring Framework
releases
GA 通用稳定
学习
API
maven仓库
Spring Web MVC
1.1简介
Spring框架是由于软件开发的复杂性而创建的。
Spring历史
2002年,Rod Johnson创建,首次推出了Spring框架的雏形:interface21框架
2004年3月24号,发布了1.0正式版
“轮子理论”,也即“不要重复发明轮子”。
Spring理念
使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架。
SSH: Struct2 + Spring + Hibernate
SSM: SpringMVC + Spring + MyBatis
官网:官网地址
官方下载地址(github):github
中文文档:link
maven项目导包:
spring web mvc
spring-jdbc
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.7</version>>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.7</version>>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.8.RELEASE</version>>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.8.RELEASE</version>>
<scope>compile</scope>
</dependency>
</dependencies>
Spring优点
Spring是一个开源免费的框架(容器)
Spring是一个轻量级的、非入侵式的框架
控制反转(IOC)面向切面编程(AOP)
支持事务的管理,对框架整合的支持
Spring弊端
配置十分繁琐,“配置地狱”
总结
Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架
Spring组成
7大模块
拓展
现代化的java开发,说白了就是Spring的开发
构建一切 Spring Boot build Anything
协调一切 Spring cloud coordinate Anything
连接一切 Spring cloud Data Flow Connect Everything
Spring Boot
一个快速开发的脚手架
基于SpringBoot可以快速的开发单个微服务
约定大于配置
Spring CLoud
SpringCloud是基于SpringBoot实现的
IOC理论推导
private UserDao userDao = new UserDaoImp(); //固定对象
改进,使用一个Set接口实现,已经发生了革命性的变化
private UserDao userDao;
//利用set进行动态实现值的注入
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
之前,程序的控制权在程序员手上
使用了set注入后,程序不再具有主动性,而是变成了被动的接受对象
这个思想,从本质上解决了问题,我们程序员不用再去管理对象的创建了,系统的耦合性大大降低,可以更加专注在业务的实现上,这就是IOC的原型。
IOC本质
控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法。没有IoC的程序中,我们使用面向对象编程,对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建有程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓的反转就是:获得依赖的对象的方式反转了。
IoC是Spring框架的核心内容,使用多种方式完美的实现IoC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置实> 现IoC。
Spring容器在初始化时先读取配置文件,根据配置文件或元数据创建与组织对象存入容器中,程序使用时再从IoC容器中取出需要的
对象。
采用XML方式配置Bean的时候,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。
控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式,在Spring中实现控制反转的是IoC容器,其实现方式是依赖注入(Dependency Injection,DI)。
HelloSpring
beans.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
https://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
test.java
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
UserServiceImp userService = (UserServiceImp)context.getBean("userService");
userService.getUser();
Hello对象是谁创建的?
hello对象是由Spring创建的
Hello对象的属性是怎样设置的?
是由Spring容器设置的
这个过程叫做控制反转
控制
谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的。
反转
程序本身不创建对象,而变成被动的接受对象。
依赖注入
就是利用set方法进行注入的
IoC是一种编程思想,有主动的编程变成被动的接收
IoC:对象由容器创建、管理和配置。
标签:Spring