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的更多相关文章

  1. spring springMvc spring-boot spring-cloud分别是什么

    本文来源于:克己习礼成仁   的<spring springMvc spring-boot spring-cloud分别是什么> 什么是spring 关于spring的定义无论是从官方还是 ...

  2. 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)

    [原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...

  3. 基于【 springBoot +springCloud+vue 项目】一 || 项目架构简介

    一.前言 基于前期学习以及工作经验积累,持续更新基于springboot+springcloud+vue的demo项目.

  4. Spring SpringMVC SpringBoot SpringCloud 注解整理大全

    Spring SpringMVC SpringBoot SpringCloud 注解整理 才开的博客所以放了一篇以前整理的文档,如果有需要添加修改的地方欢迎指正,我会修改的φ(๑˃∀˂๑)♪ Spri ...

  5. spring-boot+spring-cloud+maven-module 一个 maven多模块的微服务架构模版

    spring-boot-cloud-module spring-boot+spring-cloud+maven-module 一个 maven多模块的微服务架构模版. 新手上路的绝佳模版,只有必要的配 ...

  6. JNPF.java前后端分离框架,SpringBoot+SpringCloud开发微服务平台

    JNPF.java版本采用全新的前后端分离架构模式.前后端分离已成为互联网项目开发的业界标准开发方式,通过 nginx+tomcat 等方式有效的进行解耦合,并且前后端分离会为以后的大型分布式架构.弹 ...

  7. 基于【 springBoot +springCloud+vue 项目】一 || 后端搭建

    缘起 本项目是基于之前学习的一个Dubbo+SSM分布式项目进行升级,基于此项目对前后端分离项目.微服务项目进一步深入学习.之前学习了vue.springBoot.springCloud后,没有进行更 ...

  8. Spring SpringMVC SpringBoot SpringCloud概念、关系及区别

    一.正面解读: Spring主要是基于IOC反转Beans管理Bean类,主要依存于SSH框架(Struts+Spring+Hibernate)这个MVC框架,所以定位很明确,Struts主要负责表示 ...

  9. SpringBoot + SpringCloud学习踩坑实记

     踩的坑: 1).springcloud框架中,依赖一直报错,很可能是没有添加springcloud的依赖,或者是依赖的版本号过低.并且springboot也有一个父依赖. 2.springcloud ...

随机推荐

  1. windows10 环境下的amqp安装步骤(图文)

    安装PHP扩展ampq 查看phpinfo()信息 下载ampq扩展 下载地址:http://pecl.php.net/package/amqp 选择一个dll版本下载,本文选择的是1.9.3 自己根 ...

  2. 转 linux下ClamAV使用

    linux下ClamAV使用 第一步:Clamav下载http://www.clamav.net/downloads#yuminstall wget –y第二步:创建clamav用户和组groupad ...

  3. LeetCode_278. First Bad Version

    278. First Bad Version Easy You are a product manager and currently leading a team to develop a new ...

  4. 原生JavaScript常用本地浏览器存储方法五(LocalStorage+userData的一个浏览器兼容类)

    基于LocalStorage+globalStorage+userData实现的一个本地存储类 userData用来兼容ie6 ie7 由userData模仿Session的方法:浏览器关闭删除保存的 ...

  5. mac的公式编辑器: mathtype/latex

    mathtype 收费版,且马上不能在mac系统上使用 latex 搜索一下: ➜ ~ brew search latex ==> Formulae gnome-latex latex2html ...

  6. Static和Const的区别

    static static局部变量 将一个变量声明为函数的局部变量,那么这个局部变量在函数执行完成之后不会被释放,而是继续保留在内存中 static 全局变量 表示一个变量在当前文件的全局内可访问 s ...

  7. Net UI Spy工具:ManagedSpy

    Net UI Spy工具:ManagedSpy 很久之前在接手一个大型的Winform项目的时候.有如下困难: 1,项目很大整个产品的Build由1400多个Project组成 2,产品的组件.控件太 ...

  8. Android模拟器Genymotion安装使用教程详解

    一.注册\登录 打开Genymotion官网,https://www.genymotion.com/ ,首先点击右上角的Sign in进行登录操作.如何登录就不细讲了,下面讲一下如何注册(备注:注册按 ...

  9. python基础篇(三)

    PYTHON基础篇(三) 装饰器 A:初识装饰器 B:装饰器的原则 C:装饰器语法糖 D:装饰带参数函数的装饰器 E:装饰器的固定模式 装饰器的进阶 A:装饰器的wraps方法 B:带参数的装饰器 C ...

  10. LeetCode 590. N叉树的后序遍历(N-ary Tree Postorder Traversal)

    590. N叉树的后序遍历 590. N-ary Tree Postorder Traversal 题目描述 给定一个 N 叉树,返回其节点值的后序遍历. LeetCode590. N-ary Tre ...