SSM - SpringBoot - SpringCloud
SSM框架
Spring + Spring MVC + MyBatis:标准MVC模式
继 SSH (Struts+Spring+Hibernate)之后,主流的 Java EE企业级 Web应用程序开源框架
- spring:实现业务对象管理
- spring MVC:负责请求的转发和视图管理
- MyBatis:作为数据对象的持久化引擎
学习:关于SSM框架的优势
Spring
轻量级容器框架,业务对象管理
AOP
基础参见:Java-AOP|Aspect
拦截器(Advisor)
- PointCutAdvisor:PointCut + Advice,
- IntroudtionAdvisor:Introduction,
AOP拦截方法级别,OOP拦截对象级别。
织入(Weaveing)
1.静态织入方式
- 编译期:AspectJ织入编译器
- 类加载期:加载到JVM时,类加载器(class loader)
2.动态代理技术
Spring AOP,核心是反射,ProxyFactory或ProxyFactoryBean-->BeanPostProcessor(自动代理)
其中,自动代理有2种
- BeanNameAutoProxyCreator
- DefaultAdvisorAutoProxyCreator
AOP代理(AOP Proxy)
- jdk动态代理:基于接口
- cglib代理:基于子类
学习:对AOP代理的理解示例
IOC
控制反转(Inversion of control),由容器创建和注入依赖对象,管理对象依赖关系
- 低侵入式设计
- 面向接口编程,对象动态组合
- 增加Bean可复用性,降低Bean之间耦合
学习:通俗易懂Ioc讲解
DI
依赖注入(Dependenc Injection),实现 Ioc思想的核心,对象之间依赖关系由容器在运行时决定
实现 DI的核心是反射:实例化类时,通过反射调用类中set方法将事先保存在HashMap中的类属性注入到类中
- 谁控制谁,控制什么
- 为何是反转,反转了什么
- 谁依赖谁,为什么需要依赖
- 谁注入谁,注入了什么
项目的运行和周期由 Ioc控制,事件的请求和反应由 DI控制
相对 Ioc而言,DI明确描述了“被注入对象依赖 IoC容器配置依赖对象”
学习:Ioc实例讲解
基本使用
spring IoC容器实例化Bean(工厂模式):BeanFactory,BeanDefinition,ApplicationContext
- setter方式实例化Bean
- 构造器实例化Bean
- 静态工厂方式实例化Bean
- 实例工厂方法实例化Bean
具体参见:https://www.jianshu.com/p/646c1f657144
spring DI实现依赖注入:
- Setter Injection:通过JavaBean属性注射依赖关系
- Constructor Injection:将依赖关系作为构造子参数传入
- 注解机制
SpringMVC
请求转发和视图管理
1.客户端发送请求到DispacherServlet(分发器)
2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller
3.Controller调用业务逻辑处理后,返回ModelAndView
4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图
5.视图负责将结果显示到客户端
- 处理映射器:将bean的name作为url进行查找
- 处理适配器:按要求的规则去执行handler
MyBatis
SpringBoot
核心:一键生成Spring Java Web应用
- 无需xml配置,开箱即用
- 无需配置静态文件过滤器,只需放在resources目录下
- 内嵌Servlet容器:Tomact
在线创建:https://start.spring.io/
IDEA创建:SpringBoot的三种创建方式
启动:SpringBoot的三种启动方式
<!-- SpingBoot相关jar包版本 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
<!-- SpringBoot核心jar包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- web开发包:包含Tomcat和springmvc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- SpringBoot热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
若想使用其他servlet容器,只需移除原有依赖、加入新的依赖即可
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
配置文件
application.properties
配置详解
.yaml
快速入门
SpringCloud
版本关系
"spring-cloud": {
"Finchley.M9": "Spring Boot >=2.0.0.RELEASE and <=2.0.0.RELEASE",
"Finchley.RC1": "Spring Boot >=2.0.1.RELEASE and <2.0.2.RELEASE",
"Finchley.RC2": "Spring Boot >=2.0.2.RELEASE and <2.0.3.RELEASE",
"Finchley.SR4": "Spring Boot >=2.0.3.RELEASE and <2.0.999.BUILD-SNAPSHOT",
"Finchley.BUILD-SNAPSHOT": "Spring Boot >=2.0.999.BUILD-SNAPSHOT and <2.1.0.M3",
"Greenwich.M1": "Spring Boot >=2.1.0.M3 and <2.1.0.RELEASE",
"Greenwich.SR5": "Spring Boot >=2.1.0.RELEASE and <2.1.15.BUILD-SNAPSHOT",
"Greenwich.BUILD-SNAPSHOT": "Spring Boot >=2.1.15.BUILD-SNAPSHOT and <2.2.0.M4",
"Hoxton.SR4": "Spring Boot >=2.2.0.M4 and <2.3.1.BUILD-SNAPSHOT",
"Hoxton.BUILD-SNAPSHOT": "Spring Boot >=2.3.1.BUILD-SNAPSHOT"
}
详情参见:https://start.spring.io/actuator/info
系列文章
spring-boot | ityouknow
spring-cloud | ityouknow
Spring Cloud Alibaba实战系列
SpringCloud Alibaba微服务系列
SpringCloud Alibaba入门
online-edu-star-master
SSM - SpringBoot - SpringCloud的更多相关文章
- spring springMvc spring-boot spring-cloud分别是什么
本文来源于:克己习礼成仁 的<spring springMvc spring-boot spring-cloud分别是什么> 什么是spring 关于spring的定义无论是从官方还是 ...
- 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)
[原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...
- 基于【 springBoot +springCloud+vue 项目】一 || 项目架构简介
一.前言 基于前期学习以及工作经验积累,持续更新基于springboot+springcloud+vue的demo项目.
- Spring SpringMVC SpringBoot SpringCloud 注解整理大全
Spring SpringMVC SpringBoot SpringCloud 注解整理 才开的博客所以放了一篇以前整理的文档,如果有需要添加修改的地方欢迎指正,我会修改的φ(๑˃∀˂๑)♪ Spri ...
- spring-boot+spring-cloud+maven-module 一个 maven多模块的微服务架构模版
spring-boot-cloud-module spring-boot+spring-cloud+maven-module 一个 maven多模块的微服务架构模版. 新手上路的绝佳模版,只有必要的配 ...
- JNPF.java前后端分离框架,SpringBoot+SpringCloud开发微服务平台
JNPF.java版本采用全新的前后端分离架构模式.前后端分离已成为互联网项目开发的业界标准开发方式,通过 nginx+tomcat 等方式有效的进行解耦合,并且前后端分离会为以后的大型分布式架构.弹 ...
- 基于【 springBoot +springCloud+vue 项目】一 || 后端搭建
缘起 本项目是基于之前学习的一个Dubbo+SSM分布式项目进行升级,基于此项目对前后端分离项目.微服务项目进一步深入学习.之前学习了vue.springBoot.springCloud后,没有进行更 ...
- Spring SpringMVC SpringBoot SpringCloud概念、关系及区别
一.正面解读: Spring主要是基于IOC反转Beans管理Bean类,主要依存于SSH框架(Struts+Spring+Hibernate)这个MVC框架,所以定位很明确,Struts主要负责表示 ...
- SpringBoot + SpringCloud学习踩坑实记
踩的坑: 1).springcloud框架中,依赖一直报错,很可能是没有添加springcloud的依赖,或者是依赖的版本号过低.并且springboot也有一个父依赖. 2.springcloud ...
随机推荐
- 【warning】set the environment variable MXNET_CUDNN_AUTOTUNE_DEFAULT to 0 to disable
前言 运行mxnet程序的时候出现这个warning信息,但是不影响整个程序的运行,不过宝宝喜欢将warning信息尽量也clear,强迫症嘛?!哈哈哈哈 问题描述 [::] src/operator ...
- Python - 在CentOS7.5系统中安装Python3
注意:以下内容均使用root用户执行操作. 1-确认信息 # uname -a Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu ...
- Selenium2+python自动化2.7-火狐44版本环境搭建(转)
转载地址:https://www.cnblogs.com/yoyoketang/p/selenium.html 前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以 ...
- 2019年Java面试题基础系列228道(6)
51.ArrayList 与 LinkedList 的不区别? 最明显的区别是 ArrrayList 底层的数据结构是数组,支持随机访问,而LinkedList 的底层数据结构书链表,不支持随机访问. ...
- git 获取线上代码并合并到本地
//查询当前远程的版本 $ git remote -v //获取最新代码到本地(本地当前分支为[branch],获取的远端的分支为[origin/branch]) $ git fetch origin ...
- [bzoj3420]Poi2013 Triumphal arch_树形dp_二分
Triumphal arch 题目链接:https://lydsy.com/JudgeOnline/problem.php?id=3420 数据范围:略. 题解: 首先,发现$ k $具有单调性,我们 ...
- LeetCode 142. 环形链表 II(Linked List Cycle II)
142. 环形链表 II 142. Linked List Cycle II 题目描述 给定一个链表,返回链表开始入环的第一个节点.如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整 ...
- [转帖]实时流处理系统反压机制(BackPressure)综述
实时流处理系统反压机制(BackPressure)综述 https://blog.csdn.net/qq_21125183/article/details/80708142 2018-06-15 19 ...
- React项目使用Redux
⒈创建React项目 初始化一个React项目(TypeScript环境) ⒉React集成React-Router React项目使用React-Router ⒊React集成Redux Redux ...
- 自定义注解扩展springMvc的validation注解
文章目录 前言 自定义校验注解 使用 后记 前言 我们都知道 springMvc 的检验框架使用的是 hibernate 的 validator ,检验数据,是有那么一点小爽快: 但是,validat ...