Spring、Spring MVC、Spring boot 的区别

Spring、Spring MVC、Spring boot 的区别

  1. Spring是一个开发框架
  2. Spring MVC是基于Spring实现的MVC框架
  3. Spring boot 是基于spring4条件注册的一套整合开发包,整合框架,不是一个技术框架。
    • Spring boot的特色是自动配置.
    • Spring boot = Spring4 + 自动配置
    • 工作原理:
      • 自动注入通过 @EnableAutoConfiguration 注解实现
      • 该注解通过子注解@Import(AutoConfigurationImportSelector.class)来实现
      • AutoConfigurationImportSelector.class 根据条件来选择需要导入的配置类
      • 配置类中声明了各种条件注解,当条件满足时自动注入配置类Bean
    • 对比Spring 4:
      • Spring boot的技术实现是基于Spring4,没有新的技术实现。
      • 在Spring4中如果要注入一个bean需要添加注解配置或者Java配置,
      • 而在Spring boot中只要引入spring boot相关的start pom.xml文件,spring boot会自动扫描相关相关jar包,
      • Spring boot根据路径下的spring.factories文件(此文件是一个配置文件),定义需要引入的配置文件(Java配置文件),
      • 配置文件(@Configuration)中定义了bean自动注入需要满足的条件,当条件满足时,bean会被自动注入,而不需要像Spring 4 手动去为需要注入的bean加注解配置和java配置)
    • 对功能的支持(如支持MongoDB), Spring boot和Spring4 的做法有什么不同
      • 做法的不同:
        • Spring4 需要手动注入/配置.
          • 手动注入(注解配置/Java配置)功能需要的相关Bean(MongoTemplate)
          • 添加@EnableMongoRepositories到 Java配置文件。
        • Spring boot只需要引入相应的starter pom文件,<u>无需任何配置</u>.
          • 通过自动配置了注入了MongoTemplate,自动配置了不用要开发者去注入。
          • 自动配置了@EnableMongoRepositories.
      • Spring boot没有通过新的技术实现来支持MongoDB。

Spring boot 工作原理

  1. @SpringBootApplication
    • 是Spring boot定义的注解
    • 是一个组合注解(@Configuration,@EnableAutoConfiguration, @ComponentScan)
      • @Configuration Spring 注解
      • @ComponentScan Spring注解
      • @EnableAutoConfiguration Spring boot注解
        ...
        @Import({AutoConfigurationImportSelector.class}) // 根据条件来选择需要导入的配置类
        public @interface EnableAutoConfiguration {
        ...
        

Questions

  1. 既然@Configuration会被Spring扫描自动注册,为什么spring boot 要定义spring.factories把需要自动配置的配置类完整路径加进去?
    • Spring boot 默认扫描当前项目xxxApplication.class所在目录以及其子目录下注解。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值