Yin的笔记本

vuePress-theme-reco Howard Yin    2021 - 2025
Yin的笔记本 Yin的笔记本

Choose mode

  • dark
  • auto
  • light
Home
Category
  • CNCF
  • Docker
  • namespaces
  • Kubernetes
  • Kubernetes对象
  • Linux
  • MyIdeas
  • Revolution
  • WebRTC
  • 云计算
  • 人工智能
  • 分布式
  • 图像处理
  • 图形学
  • 微服务
  • 数学
  • OJ笔记
  • 博弈论
  • 形式语言与自动机
  • 数据库
  • 服务器运维
  • 编程语言
  • C
  • Git
  • Go
  • Java
  • JavaScript
  • Python
  • Nvidia
  • Rust
  • Tex
  • Shell
  • Vue
  • 视频编解码
  • 计算机网络
  • SDN
  • 论文笔记
  • 讨论
  • 边缘计算
  • 量子信息技术
Tag
TimeLine
About
查看源码
author-avatar

Howard Yin

303

Article

153

Tag

Home
Category
  • CNCF
  • Docker
  • namespaces
  • Kubernetes
  • Kubernetes对象
  • Linux
  • MyIdeas
  • Revolution
  • WebRTC
  • 云计算
  • 人工智能
  • 分布式
  • 图像处理
  • 图形学
  • 微服务
  • 数学
  • OJ笔记
  • 博弈论
  • 形式语言与自动机
  • 数据库
  • 服务器运维
  • 编程语言
  • C
  • Git
  • Go
  • Java
  • JavaScript
  • Python
  • Nvidia
  • Rust
  • Tex
  • Shell
  • Vue
  • 视频编解码
  • 计算机网络
  • SDN
  • 论文笔记
  • 讨论
  • 边缘计算
  • 量子信息技术
Tag
TimeLine
About
查看源码
  • Spring原理

    • Bean和Spring
      • IoC/DI 控制反转/依赖注入
        • AOP 面向方面的程序设计
          • Spring RESTful的一般架构

          Spring原理

          vuePress-theme-reco Howard Yin    2021 - 2025

          Spring原理


          Howard Yin 2019-11-13 09:00:02 JavaSpring原理编程语言

          # Bean和Spring

          • Bean:Java类或者JavaBean(就是一种特殊的Java类)
          • Spring:生产Bean的工厂

          Spring 可以生产类的对象,也即实例化(new 类名());

          # IoC/DI 控制反转/依赖注入

          • IoC : Inversion of Control

          控制反转(IoC)是一个通用的概念,它可以用许多不同的方式去表达,依赖注入仅仅是控制反转的一个具体的例子。

          控制反转将原本在类内部进行的实例化操作反转到类的外部,依赖注入使在类内部调用的内由外部注入,以此减少类之间的依赖性。

          • 非IOC/DI程序的类调用:在代码里,一个类中,引用另外一个类,并 new 一个对象
          • IOC/DI程序的类调用:在代码里,一个类中,引用另外一个类,但不 new 对象,而是将 new 操作交给 Spring 的 Bean 工厂完成

          例:某个非IOC/DI程序的调用:

          • 数据访问层
          public Class UserDao {
          
              //其他代码
          
          }
          
          1
          2
          3
          4
          5
          • 业务逻辑层,调用了数据访问层
          public Class UserService {
          
              UserDao userDao = new UserDao();
          
              //其他代码
          
          }
          
          1
          2
          3
          4
          5
          6
          7

          把它改为IOC/DI模式:

          public Class UserService {
          
              UserDao userDao;
          
              //其他代码
          
              UserService(UserDao userDao) {
                  this.userDao = userDao;
              }
          }
          
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10

          并且在Spring配置文件中写上:

          <bean id="userDao" class="UserDao" scope="prototype"></bean>
          
          <bean id="userService" class="UserService" scope="prototype">
              <property name="userDao" value="userDao"></property>
          </bean>
          
          1
          2
          3
          4
          5

          Spring就会在启动时完成 userDao 的实例化并通过构造函数注入到 userService 中,全部过程均由Spring完成,无需再进行 new 操作。

          # AOP 面向方面的程序设计

          面向方面的编程需要把程序逻辑分解成不同的部分,这些部分称为“关注点”。跨一个应用程序的多个点的功能被称为“横切关注点”,这些横切关注点在概念上独立于应用程序的业务逻辑。有各种各样的常见的很好的方面的例子,如日志记录、审计、声明式事务、安全性和缓存等。Spring AOP 模块提供拦截器来拦截一个应用程序,例如,当执行一个方法时,你可以在方法执行之前或之后添加额外的功能。

          # Spring RESTful的一般架构

          四层:

          • DAO层、Model层、数据模型层:直接操作数据库的层
          • Service层:将Controller层的数据转化到数据模型层(进行加密解密、格式转换等操作)
          • Controller层:封装Service层,通过API与View层沟通
          • View层:前端页面
          帮助我们改善此页面!
          创建于: 2019-11-13 09:00:24

          更新于: 2019-11-13 09:00:24