全网首发美团大牛整理的Spring秘籍宝典+思维导图,理论实战齐飞

360 阅读5分钟

Hello,今天给各位童鞋们分享的是Spring,赶紧拿出小本子记下来吧 image.png

1、spring

1.1、简介

spring:给软件行业带来了春天

2002年首次推出了Spring框架的雏形: interface21框架

spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版

Rod Johnson,spring Framework创始人,著名作者,很难想象他的学历,他是悉尼大学的博士,然而他的专业不是计算机,而是音乐

spring理念:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架

SSH :Struct2 + Spring + Hibernate

SSM : Spring + SpringMvc + Mybatis

image.png

1.2、优点

Spring是一个开源的免费的框架(容器)

Spring是一个轻量级的、非入侵式单独框架

控制反转(IOC ), 面向切面编程(AOP)

支持事务的处理,对框架整合的支持总结:Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架

1.3、组成

image.png

1.4、拓展

在Spring的官网有这个介绍:现代化的Java开发,说白了就是基于Spring的开发

Spring Boot

 一个快速开发的脚手架

 基于SpringBoot可以快速地开发单个微服务

 约定大于配置

Spring Cloud

 SpringClould是基于SpringBoot实现的

因为现在大多数公司都在使用SpringBoot进行快速开发,学习SpringBoot的前提,需要完全掌握Spring以及SpringMVC

弊端:发展太久,违背原来的理念,配置十分繁琐,人称“配置地狱”

2、IOC理论推导

UserDao接口

UserDaoImpl实现类

UserService业务接口

UserServiceImpl接口实现类

~在我们之前的业务中,用户的需求可能会影响我们原来的代码,我们需要根据用户的需求去修改源代码,如果程序代码量十分大,修改一次的成本代价十分昂贵

image.png 我们使用一个Set方法实现,已经发生可革命性的变化

之前,程序是主动创建对象,控制权在程序员手上

使用了Set注入之后,程序不在具有主动性,而是变成了被动地接受对象

private UserDao userDao;

public void setUserDao(UserDao userDao) {

    this.userDao = userDao;

}

image.png 这种思想,从本质上解决了问题,我们不用再去管理对象的创建了,系统的耦合性大大降低,可以更加专注在业务的实现上,这就是IOC的愿望

image.png

IOC本质

控制反转Ioc(Inversion of Control),是一种设计思想,DI(依赖注入)是实现Ioc的一种方法,也有人认为DI只是Ioc的另一种说法,没有IOC的程序中,我们使用面向对象编程,对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了。

采用XMl方式配置Bean的时候,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的

控制反转是一种通过描述(XML或者注解)并通过第三方去生产获取特定对象的方式,在Spring中实现控制反转的是IOC容器,其实现方法是依赖注入(DependencyInjection,DI)

image.png

3、HelloSpring

导包

image.png 创建Hello类

image.png 编写配置文件applicationContext.xml

    <property name="id" value="123"/>

</bean>

测试

image.png 思考问题?

Hello对象是谁创建的?

 Hello对象是由Spring创建的

Hello对象的属性是怎么设置的?

 Hello对象的属性是由Spring容器设置的

这个过程就叫控制反转;

控制:谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的

反转:程序本身不创建对象,而变成被动的接受对象

依赖注入:就是利用set方法来进行注入的

IOC是一种编程思想,由主动的编程变成被动的接受

可以通过newClassPathXmlApplicationContext去浏览一下底层代码

到了现在,我们要实现不同的操作,只需要在Xml配置文件中进行修改,所谓的IOC,就是对象由Spring来创建,管理,装配

4、IOC创建对象的方式

使用构造器注入

默认使用无参构造创建对象

</bean>

可以使用有参构造创建对象

1.下标赋值

image.png  2.通过类型创建,不建议使用

image.png

3.直接通过参数名来设置

image.png 注意:在配置文件加载的时候,容器中管理的对象就已经创建了

5、Spring配置

5.1、别名

image.png

image.png

5.2、Bean的配置

id: bean的唯一标识符

class: bean对象对应的全限定名:包名+类名

name: 别名,可以同时取多个名

</bean>

5.3、import

一般用于团队开发,可以将多个配置文件导入合并成一个

image.png

<import resource="bean2.xml"/>

6、依赖注入

6.1、构造器注入

前面已经说过

6.2、Set方式注入【重点】

依赖注入:set注入  依赖:bean对象的创建依赖于容器  注入:bean随想中的所有属性,由容器来注入环境搭建

复杂类型

image.png

2.真实测试对象

image.png 3.applicationContext.xml

image.png 4.测试类

image.png

6.3、拓展方式注入

可以使用p命名空间和c命名空间进行注入加入约束

xmlns:p="www.springframework.org/schema/p"

   xmlns:c="http://www.springframework.org/schema/c"

配置文件

6.4、Bean的作用域

image.png 1.单例模式:Spring默认机制

</bean>

2.原型模式:每次从容器中获取对象的时候,都会产生一个新对象

    <property name="city" value="大兴"/>

    <property name="pro" value="北京"/>

</bean>

3.其余request,session,application这些只能在web开发中使用到

7、Bean的自动装配

自动装配是Spring满足bean依赖一种方式

Spring会在上下文中自动寻找,并自动给bean装配属性

在Spring中有三种装配的方式

1.在xml中显示的配置

2.在Java中显示配置

3.隐式的自动装配bean(重要)

好啦,今天的文章就到这里了,希望能够帮助到屏幕前迷茫的你们