spring框架核心技术讲解(上)--超详细教程加案例分析

目录

一.spring简介

        1.1 含义:

        1.2 优点

        1.3 官方网站:Spring | Why Springhttps://spring.io/why-spring

二.spring 控制反转IOC(依赖注入)的特点

        2.1 控制反转是什么

        2.2 案例(讲解控制反转)

三.spring的注入方式

set方法属性注入

构造注入

接口注入:也是自动装配

3.1 set方法属性注入

 3.2 构造注入

3.3 接口注入(自动装配)===用的最多,最方便 

        有两种方式:byName 和byType

四.spring与web容器的整合


一.spring简介

        1.1 含义:

        Spring是一个免费开源的Java开发框架,用于构建企业级应用程序。它提供了一套全面的解决方案,包括依赖注入、面向切面编程、事务管理、数据访问、Web开发等功能,使得开发人员可以更加高效地开发Java应用程序。简单说,Spring就是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。

        1.2 优点

        spring ==>"春天",意味着javaIT迎来了 “春天” ,

        spring无处不在,自从这个框架推出以来,就一直被程序员们喜爱,受欢迎,很多项目中广     泛运用,Spring还拥有科技界所有知名人士的贡献,包括阿里巴巴,亚马逊,谷歌,Microsoft等

        spring是安全的,在快速,负责任地处理安全问题方面有着良好的记录。

        1.3 官方网站
Spring | Why Springhttps://spring.io/why-spring

二.spring 控制反转IOC(依赖注入)的特点

        2.1 控制反转是什么

        控制反转(IoC=Inversion of Control)IoC,用白话来讲,就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:(依赖)控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。 IoC还有一个另外的名字:“依赖注入 (DI=Dependency Injection)” ,即由容器动态的将某种依赖关系注入到组件之中 ,就是将以前由程序员实例化对象/赋值的工作交给了spring处理

        2.2 案例(讲解控制反转)

        首先,我们要知道控制反转解决了我们哪些问题??

        也就是程序员手动实例化对象的弊端-----就是当依赖的接口的实现需要大批量改动,迭代,           么维护的成本就会非常高,而当接口的实现类不统一的时候维护成本更高

        场景演练:客户需求,更改个人信息 ,但是现在需要在这个基础之上做迭代 可以上传头像,并且提高性能

正常来说,我们都会在直接在后面添加新的功能,对不对,可是同学们,可是如果客户说“有些地方需要上传头像功能,有些地方不需要上传头像功能呢”

spring框架核心技术讲解(上)--超详细教程加案例分析_第1张图片

 之前,我们就会建立两个类,一个类有上传头像功能,一个没有,到时候在后台调用的时候,调用不同的类就行,可是如果客户又要改动说这些要这些功能哪些不要,那是不是我们都要一个一个去改呢,但是spring出现之后,这些问题就可以避免掉

spring框架核心技术讲解(上)--超详细教程加案例分析_第2张图片

 spring框架核心技术讲解(上)--超详细教程加案例分析_第3张图片

 现在就用IoC来运用一下,将实例化对象的这一步交给spring来帮助我们完成。做一个对比

首先,我们要先建一个spring的配置文件

spring框架核心技术讲解(上)--超详细教程加案例分析_第4张图片

接下来我们将UserService看作一个属性,给它提高set,get方法

spring框架核心技术讲解(上)--超详细教程加案例分析_第5张图片

 然后编辑xml.文件,凡是在spring配置文件中配置,那么该类JavaBean就交给了spring容器管理

我们在里面像下面,web层和Impl层,写出路径,并且给它命一个ID 将impl注入该类中,那么该类就用了impl中的方法

spring框架核心技术讲解(上)--超详细教程加案例分析_第6张图片

 最后我们进行前台测试

spring框架核心技术讲解(上)--超详细教程加案例分析_第7张图片

 测试结果;可以看到在spring配置文件中,我给UserAction,和GoodsAction注入的是不同Impl

所以调的方法就是不一样的,这样就完美解决了程序员实例化对象的弊端

spring框架核心技术讲解(上)--超详细教程加案例分析_第8张图片

三.spring的注入方式

  1. set方法属性注入

  2. 构造注入

  3. 接口注入:也是自动装配

        上面演示控制反转就是set方法属性注入,毕竟我们都把那个UserAction类看作了一个属性,并且提供了set,get的方法,是吧

3.1 set方法属性注入

        上面注入的是接口,它也可以注入属性具体的值

        先创建属性,提供get,set方法,写一个方法调用这些属性

spring框架核心技术讲解(上)--超详细教程加案例分析_第9张图片

 spring框架核心技术讲解(上)--超详细教程加案例分析_第10张图片

         然后再配置文件中,注入这些属性

spring框架核心技术讲解(上)--超详细教程加案例分析_第11张图片

         在前台调用

spring框架核心技术讲解(上)--超详细教程加案例分析_第12张图片

 3.2 构造注入

        先定义属性,其次提供有参,无参构造方法,一样提供获取属性的方法

spring框架核心技术讲解(上)--超详细教程加案例分析_第13张图片

         最后再前台输入

spring框架核心技术讲解(上)--超详细教程加案例分析_第14张图片

3.3 接口注入(自动装配)===用的最多,最方便 

        有两种方式:byName 和byType

        byName:javabean会根据属性名在spring配置文件上下文中根据spring上下文中的bean ID进行查找,只要有就会自动注入

        byType:javabean会根据属性名对应的接口类型在spring配置文件上下文中根据spring上下文是否有该接口类型的实现类进行注入,如果找到两个及以上,那么spring配置文件会包错

四.spring与web容器的整合

        我们每一个请求如果都要拿到UserActiob都需要建模一次的话,非常消耗性能,希望只建模一次,然后每一个请求都可以获取到spring上下文,那么就有监听器可以做到,将spring放入tomcat上下文

创建一个监听器将spring放入tomcat上下文

spring框架核心技术讲解(上)--超详细教程加案例分析_第15张图片

当用户请求的时候,获取spring上下文对象 spring框架核心技术讲解(上)--超详细教程加案例分析_第16张图片

 运行结果:

spring框架核心技术讲解(上)--超详细教程加案例分析_第17张图片

你可能感兴趣的:(spring,java,后端,开发语言)