您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

时间:2021-06-24 10:38:32  来源:今日头条  作者:Java专业爱好者
一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

第一章:认识Spring

Spring认识框架

spring全家桶: spring ,springmvc,spring boot,spring cloud

spring:出现在2002左右,解决企业开发的难度,减轻对项目模块之间的管理。

类和类之间的管理,帮助开发人员创建对象,管理对象之间的关系。

spring核心技术ioc ,aop 。能实现模块之间,类之间的解耦合。

依赖: classa中使用classb的属性或者方法,叫做classa依赖classb。

Spring框架内部模块

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

第二章 IoC控制反转

IoC概念

框架怎么学:框架是一个软件,是其它人写好的软件。知道框架能干啥, 具体的使用步要就行。

1)知道框架能做什么,mybatis--访问数据库, 对表中的数据执行增删改查。

2)框架的语法,框架要完成一个功能,需要一定的步骤支持的。

3)框架的内部实现,框架内部怎么做,原理是什么。

4)通过学习,可以实现一个框架。

spring的第一个核心功能ioc

IOC (Inversion of Control) :控制反转,是一个理论,概念,思想。

描述的:把对象的创建,赋值,管理工作都交给代码之外的容器实现,也就是对象的创建是有其它外部资源完成。

控制:创建对象,对象的属性赋值,对象之间的关系管理。

反转:把原来的开发人员管理,创建对象的权限转移给代码之外的容器实现。由容器代替开发人员管理对象。创建对象,给属性赋值。
正转:由开发人员在代码中,使用new构造方法创建对象,开发人员主动管理对象。

public static void main(string args[]){
student student - new Student();//在代码中, 创建对象。--正转。

}

容器:是一个服务器软件,一 个框架(spring)

为什么要使用ioc :目的就是减少对代码的改动,也能实现不同的功能。实现解耦合。

创建对象的方式

为什么要使用ioc :目的就是减少对代码的改动,也能实现不同的功能。实现解耦合。

JAVA中创建对象有哪些方式:

1.构造方法,new student ( )

2.反射

3.序列化

4.克隆

5.ioc。容器创建对象

6.动态代理,利用反射机制在运行时创建代理类。

IoC的实现技术

ioc的体现:
servlet

1.创建类继承HttpServelt
2.web.xml 注册 servlet ,使用<servlet-name> myservlet </ servlet-name>
<servelt-class>com.
bjpwernode.controller.MyServlet1</servlet-class>
3.没有创建Servlet对象,没有 MyServlet myservlet = new MyServlet ()
4. Servlet是Tomcat服务器它能你创建的。Tomcat也称为容器。
Tomcat作为容器:里面存放的有Servlet对象,Listener ,Fil ter对象
IoC的技术实现

DT是inc的技术实现

DI ( Dependency Injection) : 依赖注入,只需要在程序中提供要使用的对象名称就可以,至

赋值,查找都由容器内部实现。

spring是使用的di实现了ioc的功能,spring底层创建对象,使用的是反射机制。

第一个例子创建对象

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

创建spring配置文件

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

创建容器对象ApplicaitonContext【拿到spring创建的对象】

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

spring创建对象的时机

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

获取容器中对象信息的api

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

创建非自定义对象

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

设值注入概念【注入就是赋值】

ch02-di-xml:在spring的配置文件中,给java对象的属性赋值。

di:依赖注入,表示创建对象,给属性赋值。

di的实现有两种:

1.在spring的配置文件中,使用标签和属性完成,叫做基于XML的di实现。

2.使用spring中的注解,完成属性赋值,叫做基于注解的id实现。

di的语法分类:

1. set注入(设置注入) : spring调用类的set方法,在set方法可以实现属性的赋值。

80左右都是使用的set注入。

2.构造注入,spring调用类的有参数构造方法,创建对象。在构造方法中完成赋值。

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

简单类型的设值注入实现

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

单元测试junit

就是因为在main文件中测试不方便,不能独立测试每一个方法,所以提出单元测试。

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

junit :单元测试,一个工具类库,做测试方法使用的。

单元:指定的是方法,一个类中有很多方法,一个方法称为单元。

使用单元测试

1.需要加入junit依赖。

<dependency>

<groupId>junit</groupId>

<arti factId> junit </arti factId><version>4.11</version>

<scope>test</ scope>

</ dependency>

2.创建测试作用的类:叫做测试类

src/ test/java目录中创建类

3.创建测试方法

1) public玩法

2)没有返回值void

3)方法名称自定义,建议名称是test +你要测试万法名称

4)方法没有参数

5)方法的上面加入@Test,这样的方法是可以单独执行的。不用使用main方法。

设值注入【set注入】的注意事项

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

设值注入只是使用set方法

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

xml文件规定,所有的属性必须放在引号中,int类型的数据也一样。

设值注入也可以给别人写的类进行赋值,只要有对用的set方法就行。

引用类型的设值注入

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

构造注入

构造注入是指,在构造调用者实例的同时,完成被调用者的实例化。即使用构造器设置依赖关系。

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

还可以省略index。

构造注入创建文件对象

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

复习第一天内容【思维导图】

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

IoC作业

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

自动注入byName

简化对于引用类型的重复赋值,减少冗余。

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

自动注入byType

2. byType(按类型注入) : java类中引用类型的数据类型和spring容器中(配置文件) <bean>的class是同源关系的,这样的bean能够赋值给引用类型。

同源就是一类的意思:

1.java类中引用类型的数据类型和bean的class的值是样的。

2.java类中引用类型的数据类型和bean的class的值父子类关系的。

3.java类中引用类型的数据类型和bean的class的值接口和实现类关系的

语法:

<bean id="xx" class="yyy" autowire= "byType">

简单类型属性赋值

</bean>

为什么使用多配置文件

大型项目中,需要多个配置文件。

多个配置优势

1.每个文件的大小比一个文件要小很多,效率高。

2.避免多入竞争带来的冲突。

如果你的项目有多个模块(相关的功能在一起),一个模块一个配置文件。

学生考勤模块一个配置文件,张三

学生成绩一个配置文件,李四

多文件的分配方式:

1.按功能模块,一个模块一个配置文件

2.按类的功能,数据库相关的配置一个文件配置文件,做事务的功能一个配置文件,做service功能的一个配置文件等。

包含关系的配置文件

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

注解的使用步骤

基于注解的di:通过注解完成java对象创建,属性赋值。

使用注解的步骤:

1.加入maven的依赖spring-context ,在你加入spring- context的同时,间接加入spring- aop的依赖,使用注解必须使用spring-aop依赖。

2.在类中加入spring的注解(多个不同功能的注解)

3.在spring的配置文件中,加入一个组件扫描器的标签,说明注解在你的项目中的位置。

学习的注解:

1.@Component

2.@Respotory

3.@service

4.@Controller

5.@value

6.@Autowired

7.@Resource

Component注解使用

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

组件扫描器

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

多注解项目分层

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

@Component(value = "myStudent ")等同于

<bean id= "myStudent" class="com.bjpowernode.ba01.Student" />

spring中和@Component功能一致,创建对象的注解还有:

1. @Repository (用在持久层类的上面) :放在da的实现类上面,表示创建dao对象,dao对象是能访问数据库的。

2.@Service(用在业务层类的上面) :放在service的实现类上面,创建service对象,service对象是做业务处理,可以有事务等功能的。

3. @Controller(用在控制器的上面) :放在控制器(处理器)类的上面,创建控制器对象的,控制器对象,能够接受用户提交的参数,显示请求的处理结果。

以上三个注解的使用语法和@Component 一样的。都能创建对象,但是这三个注解还有额外的功能。

@Repository,@service , @Controller 是给项目的对象分层的。

不清楚要用上面三个注解的情况就用@Component。

扫描多个包的方法

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

简单类型属性赋值

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

引用类型属性赋值AutoWired自动注入,使用byType

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

步骤:首先扫描配置文件ApplicaitonContext,使用组件扫描器扫描base-package,创建包中所有对象,根据其中的注解注入【赋值】。

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

引用类型属性赋值AutoWired自动注入,使用byName

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

比较

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

引用类型AutoWired的required属性

引用类型

@Autowired:spring 框架提供的注解,实现引用类型的赋值。

spring中通过注解给引用类型赋值,使用的是自动注入原理, 支持byName, byType。

@Autowired:默认使用的是byType自动注入。

属性:required,是 一个boolean类型的,默认true。

required=true :表示引用类型赋值失败,程序报错,并终止执行。

required=false :引用类型如果赋值失败,程序正常执行,引用类型是null。

引用类型AutoWired的required属性推荐使用默认值true

使用true, 尽早解决程序中的问题,报错。

引用类型Resource

Resource是来自于JDK中的注解,不是来自于spring的。

引用类型

@Resource:来自jdk中的注解,spring框架提供J对这个注解的功能支持,可以使用它给引用类型赋值。使用的也是自动注入原理,支持byName ,byType ,默认是byName。

位置: 1. 在属性定义的上面,无需set方法,推荐使用。

2.在set方法的上面

//默认是byNamel

@Resource

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

xml配置文件和注解的对比

经常改的就是使用xml配置文件、不经常改的就使用注解。

注解为主,配置文件为辅

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

复习【控制反转】

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

复习动态代理的实现方式

使用动态代理的目的是在不改变原先类的基础上,对其进行功能增强。

JDK 动态代理

动态代理的实现方式常用的有两种:使用JDK的Proxy,与通过CGLIB生成代理。Jdk的动态要求目标对象必须实现接口,这是java设计上的要求。

从jdk1.3以来,java 语言通过java.lang.reflect 包提供三个类支持代理模式Proxy,Method 和InovcationHandler。

CGLIB动态代理(了解)

CGLIB的要求更低

CGLIB(Code Generation Library)是一个开源项目。是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java 类与实现Java接口。它广泛地被许多AOP的框架使用,例如Spring AOP。

使用JDK 的Proxy 实现代理,要求目标类与代理类实现相同的接口。若目标类不存在接口,则无法使用该方式实现。但对于无接口的类,要为其创建动态代理,就要使用CGLIB来实现。.

CGLIB代理的生成原理是生成目标类的子类,而子类是增强过的,这个子类对象就是代理对象。所以,使用CGLIB生成动态代理,要求目标类必须能够被继承,即不能是final 的类。

CGLIB经常被应用在框架中,例如Spring ,Hibernate等。cglib 的代理效率高于Jdk。项目中直接使用动态代理的地方不多。一般都使用框架提供的功能。

用注解实现Ioc作业

1、加入依赖

2、创建类,在类中加入注解

3、声名组件扫描器

使用动态代理实现一个功能增强

一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 


一文带你学习Spring框架从入门到精通,通向架构师道路的必经之学

 

今日份分享已结束,请大家多多包涵和指点!



Tags:Spring框架   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
最近呀,有小伙伴提出 自己在学习 Spring 的时候,这个源码环境有些搞不定。 那这怎么能行,不能因为这点小困难就让小伙伴放弃呀。这里咱就不在赘述读Spring源码的好处了吧,想干这...【详细内容】
2021-09-14  Tags: Spring框架  点击:(56)  评论:(0)  加入收藏
第一章:认识SpringSpring认识框架spring全家桶: spring ,springmvc,spring boot,spring cloudspring:出现在2002左右,解决企业开发的难度,减轻对项目模块之间的管理。类和类之间的...【详细内容】
2021-06-24  Tags: Spring框架  点击:(123)  评论:(0)  加入收藏
诞生的背景什么背景下诞生了该技术?不论是哪个框架,不会平白无故诞生,不会平白无故地被人所追捧,了解其背景,追根溯源。让我们把时间拨回到2002年,当时JavaEE和EJB正大行其道。Sp...【详细内容】
2021-05-31  Tags: Spring框架  点击:(180)  评论:(0)  加入收藏
译者:littlebrain4solving来源: https://blog.csdn.net/littlebrain4solving/概要说明在此篇文章中,我们根据使用@Async注解进行探索Spring对异步执行的支持。简单的把@Async注...【详细内容】
2021-03-05  Tags: Spring框架  点击:(378)  评论:(0)  加入收藏
在我们的开发中,会不可避免的遇到Bean之间循环依赖的,所谓循环依赖,就是两个或者两个以上的Bean互相持有对方,这样在程序运行调用中,会出现这种循环依赖的现象,假设是两个Bean,当程...【详细内容】
2020-12-14  Tags: Spring框架  点击:(87)  评论:(0)  加入收藏
前言学习过Spring框架的人一定都会听过Spring的IOC(控制反转) 这个概念,对于初学Spring的人来说,总觉得IOC是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spr...【详细内容】
2020-12-03  Tags: Spring框架  点击:(116)  评论:(0)  加入收藏
1、IOC和DIIOC: 控制反转 即控制权的转移,将我们创建对象的方式反转了,以前对象的创建时由我们开发人员自己维护,包括依赖关系也是自己注入。使用了spring之后,对象的创建以...【详细内容】
2020-11-03  Tags: Spring框架  点击:(58)  评论:(0)  加入收藏
今天学习内容安排如下: 切面配置的核心三步骤。 传统sprin配置和AspectJ配置都学下,xml和注解都使用下。 同时为了测试,补充说明一下spring的junit集成,几天前没来得及学的知识...【详细内容】
2020-08-19  Tags: Spring框架  点击:(64)  评论:(0)  加入收藏
今天是刘小爱自学Java的第123天。感谢你的观看,谢谢你。 学过很多面向XX编程,比如:面向过程编程,面向对象编程,面向接口编程,现在又是面向切面编程。但是不管如何,说来说去最终都是...【详细内容】
2020-08-15  Tags: Spring框架  点击:(97)  评论:(0)  加入收藏
Spring介绍Spring 是一个开源框架,是一个分层的 JavaEE 一站式框架。所谓一站式框架是指 Spring 有 JavaEE 开发的每一层解决方案。 WEB层:SpringMVC Service层:Spring的Bean管...【详细内容】
2020-03-03  Tags: Spring框架  点击:(68)  评论:(0)  加入收藏
▌简易百科推荐
近日只是为了想尽办法为 Flask 实现 Swagger UI 文档功能,基本上要让 Flask 配合 Flasgger, 所以写了篇 Flask 应用集成 Swagger UI 。然而不断的 Google 过程中偶然间发现了...【详细内容】
2021-12-23  Python阿杰    Tags:FastAPI   点击:(6)  评论:(0)  加入收藏
文章目录1、Quartz1.1 引入依赖<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version></dependency>...【详细内容】
2021-12-22  java老人头    Tags:框架   点击:(11)  评论:(0)  加入收藏
今天来梳理下 Spring 的整体脉络啦,为后面的文章做个铺垫~后面几篇文章应该会讲讲这些内容啦 Spring AOP 插件 (了好久都忘了 ) 分享下 4ye 在项目中利用 AOP + MybatisPlus 对...【详细内容】
2021-12-07  Java4ye    Tags:Spring   点击:(14)  评论:(0)  加入收藏
&emsp;前面通过入门案例介绍,我们发现在SpringSecurity中如果我们没有使用自定义的登录界面,那么SpringSecurity会给我们提供一个系统登录界面。但真实项目中我们一般都会使用...【详细内容】
2021-12-06  波哥带你学Java    Tags:SpringSecurity   点击:(18)  评论:(0)  加入收藏
React 简介 React 基本使用<div id="test"></div><script type="text/javascript" src="../js/react.development.js"></script><script type="text/javascript" src="../js...【详细内容】
2021-11-30  清闲的帆船先生    Tags:框架   点击:(19)  评论:(0)  加入收藏
流水线(Pipeline)是把一个重复的过程分解为若干个子过程,使每个子过程与其他子过程并行进行的技术。本文主要介绍了诞生于云原生时代的流水线框架 Argo。 什么是流水线?在计算机...【详细内容】
2021-11-30  叼着猫的鱼    Tags:框架   点击:(21)  评论:(0)  加入收藏
TKinterThinter 是标准的python包,你可以在linx,macos,windows上使用它,你不需要安装它,因为它是python自带的扩展包。 它采用TCL的控制接口,你可以非常方便地写出图形界面,如...【详细内容】
2021-11-30    梦回故里归来  Tags:框架   点击:(26)  评论:(0)  加入收藏
前言项目中的配置文件会有密码的存在,例如数据库的密码、邮箱的密码、FTP的密码等。配置的密码以明文的方式暴露,并不是一种安全的方式,特别是大型项目的生产环境中,因为配置文...【详细内容】
2021-11-17  充满元气的java爱好者  博客园  Tags:SpringBoot   点击:(25)  评论:(0)  加入收藏
一、搭建环境1、创建数据库表和表结构create table account(id INT identity(1,1) primary key,name varchar(20),[money] DECIMAL2、创建maven的工程SSM,在pom.xml文件引入...【详细内容】
2021-11-11  AT小白在线中  搜狐号  Tags:开发框架   点击:(29)  评论:(0)  加入收藏
SpringBoot开发的物联网通信平台系统项目功能模块 功能 说明 MQTT 1.SSL支持 2.集群化部署时暂不支持retain&will类型消 UDP ...【详细内容】
2021-11-05  小程序建站    Tags:SpringBoot   点击:(55)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条