SSM - SpringBoot - SpringCloud

SSM框架

Spring + Spring MVC + MyBatis:标准MVC模式
SSH (Struts+Spring+Hibernate)以后,主流的 Java EE企业级 Web应用程序开源框架html

  • spring:实现业务对象管理
  • spring MVC:负责请求的转发和视图管理
  • MyBatis:做为数据对象的持久化引擎

学习:关于SSM框架的优点web

Spring

轻量级容器框架,业务对象管理spring

AOP

面向切面编程,预编译方式和运行时动态代理实如今不修改源码状况下给程序动态统一添加功能编程

  • 代理模式,创建在spring抽象事务管理之上的声明性事务管理
  • 支持用户自定义的切面
  • 业务逻辑分离,低耦合

核心:横切关注点的分离和织入
场景:日志记录,性能统计,安全控制,事务处理
其余几个重要概念安全

  • 切入点springboot

  • 切面mybatis

拦截器(Advisor)mvc

  • PointCutAdvisor:PointCut + Advice,
  • IntroudtionAdvisor:Introduction,

AOP拦截方法级别,OOP拦截对象级别。app

织入(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

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>

SpringCloud

相关文章
相关标签/搜索