一个工作了3年的Java程序员,遇到一个Spring Boot的问题。

他对这个问题有一些了解,但是回答得不是很好,希望参考我的高手回答。

这个问题是:“如何理解Spring Boot中的Starter”。

对于这个问题,看看普通人和高手的回答。

普通人:

嗯。。。。。。。。。。。。。

高手:

Starter是Spring Boot的四大核心功能特性之一,除此之外,Spring Boot还有自动装配、Actuator监控等特性。

Spring Boot里面的这些特性,都是为了让开发者在开发基于Spring生态下的企业级应用时,只需要关心业务逻辑,

减少对配置和外部环境的依赖。

其中,Starter是启动依赖,它的主要作用有几个。

  1. Starter组件以功能为纬度,来维护对应的jar包的版本依赖,

    使得开发者可以不需要去关心这些版本冲突这种容易出错的细节。

  2. Starter组件会把对应功能的所有jar包依赖全部导入进来,避免了开发者自己去引入依赖带来的麻烦。

  3. Starter内部集成了自动装配的机制,也就说在程序中依赖对应的starter组件以后,

    这个组件自动会集成到Spring生态下,并且对于相关Bean的管理,也是基于自动装配机制来完成。

  4. 依赖Starter组件后,这个组件对应的功能所需要维护的外部化配置,会自动集成到Spring Boot里面,

    我们只需要在application.properties文件里面进行维护就行了,比如Redis这个starter,只需要在application.properties

    文件里面添加redis的连接信息就可以直接使用了。

在我看来,Starter组件几乎完美的体现了Spring Boot里面约定优于配置的理念。

另外,Spring Boot官方提供了很多的Starter组件,比如Redis、JPA、MongoDB等等。

但是官方并不一定维护了所有中间件的Starter,所以对于不存在的Starter,第三方组件一般会自己去维护一个。

官方的starter和第三方的starter组件,最大的区别在于命名上。

官方维护的starter的以spring-boot-starter开头的前缀。

第三方维护的starter是以spring-boot-starter结尾的后缀

这也是一种约定优于配置的体现。

以上就是我对这个问题的理解。

总结

在技术的学习过程中,我认为“为什么是” 比 “是什么”要重要。

以这种方式来学习,带来的好处就是对技术理解会更加深刻。

这道题考察的就是“为什么是”,不难,关键在于自己的理解。

如果你喜欢这篇文章,记得点赞和收藏。

如果想获得一对一的面试指导以及面试资料,可以私信我。

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mic带你学架构

如果本篇文章对您有帮助,还请帮忙点个关注和赞,您的坚持是我不断创作的动力。欢迎关注「跟着Mic学架构」公众号公众号获取更多技术干货!

最新文章

  1. 2.快速部署MySQL主从复制
  2. Eclipse导出插件工程
  3. UBUNTU下Y86模拟器的安装和使用
  4. Oracle 建表,递增序列,触发器,分析函数row_number() ,partition by 子句。
  5. [js开源组件开发]js手机端浮层控件,并有多种弹出小提示,兼容pc端浏览器
  6. Object类、包装类、内部类详解
  7. MySQL在Django框架下的基本操作(MySQL在Linux下配置)
  8. PHP 和Apache的安装和配置
  9. 解决dwr报错【 Error: java.lang.SecurityException: No class by name: service】
  10. Python SqlAlchemy使用方法
  11. [wikioi]回家
  12. lost connection to mysql server at "reading initial communication packet",system error:2
  13. springmvc中关于静态资源的放行
  14. Linux中nmon的安装与使用【转】
  15. LeetCode之“链表”:Remove Duplicates from Sorted List && Remove Duplicates from Sorted List II
  16. word20170108逛景点 Sightseeing有用的词和句子
  17. nginx部署~dotnetCore+mvc网站502
  18. frist Django app — 五、Test
  19. 网站后台搭建--springboot项目是如何创建的
  20. centos系统vsftpd的一些配置

热门文章

  1. JavaScript中函数节流的理解
  2. HTML5中新增Javascript特性
  3. 多页面共用sessionStorage的实现
  4. CCF201512-2消除类游戏
  5. Coursera 学习笔记|Machine Learning by Standford University - 吴恩达
  6. SpringMVC-获得Restful风格的参数
  7. SpringMVC-开启静态资源访问权限
  8. SpringMVC的数据响应方式-页面跳转
  9. LC-141andLC-142
  10. /dev/dm-0 ....(/dev/mapper机制)