Spring vs Spring Boot

在开始接触Spring家族的组件时,搞不清楚家族成员之间的关系会让学习过程盲目,参考Spring Boot vs Spring MVC vs Spring - How do they compare?总结了Spring, Spring MVC, Spring Boot的关系。

Spring Framework解决了什么问题?
1. 应用程序的强耦合

Most important feature of Spring Framework is Dependency Injection. At the core of all Spring Modules is Dependency Injection or IOC Inversion of Control.

应用依赖注入方法,可以开发出弱耦合的应用,方便测试和维护。

一个关于测试的例子:

  • 没有应用依赖注入时
    下面的代码中,WelcomeService 在WelcomeController类中实例化,那么WelcomeService 就和WelcomeController形成了强耦合关系。这是如果进行测试,我们Mock了WelcomeService,但此时如果要Mock WelcomeController 就会很麻烦,因为已经有了WelcomeService,但是在代码中还要实例化另一个WelcomeService,两者冲突。
@RestController
public class WelcomeController {
   

    private WelcomeService service = new WelcomeService();

    @RequestMapping("/welcome")
    public String welcome() {
        return service.retrieveWelcomeMessage();
    }
}
  • 应用依赖注入时
    该段代码中:
    @Component注释的作用:告诉Spring这里有一个Bean需要他的容器进行管理
    @Autowired注释的作用:告诉Spring,这里的代码需要找一个匹配的Bean覆盖这里的代码(就是上面提到的那个Bean),这里的代码只是为了程序的完整性和作为定位点而存在。
    这时代码的耦合程度较低,可以方便的Mock WelcomeService,这时Mock WelcomeController 也不影响。
@Component
public class WelcomeService {
   
    //Bla Bla Bla
}

@RestController
public class WelcomeController {
   

    @Autowired
    private WelcomeService service;

    @RequestMapping("/welcome")
    public String welcome() {
        return service.retrieveWelcomeMessage();
    }
}
2. 重复的代码

开发者们在依赖注入思想的指导下,开发了许多有效的Spring模块:

  • Spring JDBC
  • Spring MVC
  • Spring AOP
  • Spring ORM
  • Spring JMS
  • Spring Test

以Spring JMS和Spring JDBC为例,这些模块并没有带来新的功能,实现的功能都可以用J2EE或是JEE实现。这些模块的作用是通过抽象实现以下目的:

  • 减少Boilerplate Code(重复、冗长但又不得不写的代码)/减少重复(Reduce Boilerplate Code/ Reduce Duplication)
  • 促进解耦/增加单位可测性(Promote Decoupling/ Increase Unit Testablity)
3. 与其他框架协同使用

Spring可以与其他框架有良好的集成:

  • Hibernate for ORM
  • iBatis for Object Mapping
  • JUnit & Mockito for Unit Testing
Spring MVC解决了什么问题?

Spring MVC提供可开发弱耦合的网页应用的方法,使用Spring MVC提供的Dispatcher Servlet, ModelAndView and View Resolver概念,可以让开发过程更加简单。

为什么需要 Spring Boot?

<

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值