继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【备战春招】第18天-自动装配

taoy
关注TA
已关注
手记 94
粉丝 9
获赞 1
  • 课程名称:Spring Boot3.0最新版入门与商品特征打标实战
  • 课程链接:Spring Boot3.0最新版入门与商品特征打标实战
  • 章节名称:
    • 第2章:基础入门
      • 2-6:SpringBoot如何实现自动装配(上)
      • 2-7:SpringBoot如何实现自动装配(下)
    • 讲师姓名:Er十七
  • 时间:2023-02-25 23:30

课程内容

  • 自动装配:
    • 是Spring Boot的一大特性,这个特性可以帮助其快速集成其它中间件以及框架,自动装配是其原理所在
    • 概念:Spring Boot自动将依赖包中的Bean装配到IOC容器中
    • 疑问:为什么引入starter-web就可以把一个普通Java应用变成一个Web应用
      • 首先在pom.xml中引用starter-web依赖
        • 以starter开头为Spring Boot的命名规范
      • 点击这个依赖,可以打开spring-boot-starter-web.pom文件,这个文件中有大量的与web服务有关的依赖
      • 新疑问,这个依赖是如何装载到Spring容器中的呢?KaTeX parse error: Expected 'EOF', got '这' at position 12: \color{red}这̲就是自动装配所起到的作用
        • 首先引用的包命名是有规范的:starter-web,是以starter开头
        • 打开这个org.springframework-boot:spring-boot-starter-web3.0.3这个包,
          • 这个中有如下这个结构:META-INF文件夹
          • 正常情况下,starter规范要求在上面提到的文件夹下要加入spring.factories文件,这个文件要写入自动装配类
          • 但这个文件夹下没有这个factories文件,这些都已经由Spring帮忙实现啦,而是把这个文件放入到别处,因为这些包都是相互依赖的,要引入都是一起引入,至于这个文件在哪里呢?
          • 是在autoconfigure这个jar包中的META-INF下面,文件中内容都是要引入类的全路径,是通过SPI方式从接口定义来取得其实现类
            • 其下有一个spring的文件夹,里面有org.springframework.boot.autoconfigure.AutoConfiguration.imports,内容为Spring支持的内部配置类
            • 这些类都有一个特点,就是以AutoConfiguration来结尾
            • 举例:查找DispatcherServlet类的定义所在
              • 可以找到一个DispatcherServletAutoConfiguration
              • 打开这个类源码,可以看到有这样一个注解:@ConditionalOnClass(DispatcherServlet.class)
              • 这个注解的意思就是当运行环境中有DispatcherServlet这个类,才会执行这个配置类
              • 而这个类是在webmvcjar包中引入的
              • 也就是说当需要web应用引用starter-web包后,就会引入webmvc包,从而引入DispatcherServlet这个类
            • 举例:如何把配置的地址加载到对应服务上
              • DispatcherServletRegistrationBean类来配置
              • 这个类实现了ServletRegistrationBean
                • 其中有一个重要属性:private T servlet
              • 继续实现另一个父类:DynamicRegistrationBean
              • 继续父类:RegistrationBean
              • 其父类:ServletContextInitializer
                • 这个类Spring提供的注入Servlet的规范
                • 要有子类实现其onStartup方法
                  • 在这个方法实现把servlet注入到上下文逻辑

学习心得

自动装配源码中类的跳转看晕了autoconfigServlet Inject

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP