文明演进之旋转木马——spring boot

在这里插入图片描述

Craig Walls克雷格·沃斯写的Spring Boot实战,非常生动的一本书,是丁雪丰老师翻译的,里面翻译有一些小错误和瑕疵但并不影响这是一本很好读的,很有意思的书籍。绝非是教科书般的技术类书籍,是一本站在比较高维度来看待Spring Boot的一本书籍,不应该把它当做一本单纯的技术教科书。

前言

spring一直都在进步,每一次进步都让人惊讶原来程序还能这样玩儿,每一次的更新都让人感觉“这玩意儿不能更好了”,但是每过一段时间都有不小的进步。

  1. 2004年3月,spring1.0的出现彻底改变了我们开发企业级Java应用程序的方式。Spring的依赖注入与声明式事务管理意味着组件之间再也不存在紧耦合,再也不用重量级EJB了。
  2. 2006年10月,到了spring2.0,我们可以在配置空间使用自定义的XML命名空间,更小、更简单易懂的配置文件让spring更好用。
  3. 2007年10月,spring2.5让我们有了更优雅的面向注解的依赖注入模型(即@Component和@Autowired注解),以及面向注解的Spring MVC模型。不用去显示地声明应用程序组件,也不用去继承某个基础的集成器了。
  4. 2009年12月,spring3.0让我们有了一套基于Java的全新配置,它能够取代XML。在Spring3.1里,一系列以@Enable开头的注解进一步完善了这一特性。终于,我们第一次可以写出没有任何XML配置的Spring应用程序了。
  5. 2013年12月,spring4.0提供了条件化配置,运行时spring会根据Classpath、环境和其他因素,运行哪些配置,忽略哪些配置。支持JDK1.8,增加了大量JDK1.8特性。
  6. 2017年9月,spring5.0升级到Java8。
    springboot以历代Spring Framework的进步为基础,帮你料理好了一切,让你专注于应用程序的独特工作。

入门

  • Spring Boot将很多魔法带入了Spring应用开发程序之中,最重要的是以下四个核心:
  1. 自动配置(基于spring 4特性——条件化配置)
  2. 起步依赖(你只需要起步依赖于org.springframework.boot:spring-boot-starter-web)
  3. 命令行界面(Spring Boot CLI可以实现)
  4. Actuator(一个检测工具,能让你观察应用程序的内部情况)
  • Spring Boot不是什么?
  1. 首先,他不是应用服务器,他只是内嵌了一个Servlet容器。
  2. 其次,他也没有实现诸如JPA或者JMS,他只是自动配置了某个JPA(比如Hibernate)的Bean,以此来支持了JPA。
  3. 最后,他没有引入任何形式的代码生成,而是利用了Spring 4的条件化配置特性,已经Maven和Gradle提供的传递依赖解析,实现了spring上下文的自动配置。

简而言之,从本质上来说Spring Boot就是Spring,他做了那些没有他你自己也能配置的Spring bean,他极大程度上简化了开发,只用专注于应用程序的逻辑。他没有实现任何功能,他能让你对整个程序运筹帷幄,在不同的地方运用不同的框架,就像军师排兵布阵一般。

在一般的spring mvc项目中,一般最开始需要配置dispatchServlet,HandlerMappering,HandlerAdapter,ViewResolver等组件,Spring Boot全部帮助你配置完成了。

开发第一个应用程序

  • Spring Boot的启动注解@SpringBootApplication实际上整合了三个注解:
  1. @Configuration:标明该类使用Spring基于Java的配置。
  2. @ComponentScan:启动组件扫描。
  3. @EnableConfiguration:Spring Boot特有的注解,开启了Spring Boot自动配置的魔力。
  • Spring Boot怎么实现自动配置的?
  1. 前提条件:当我们使用start.spring.io创建初始程序,勾选需要用到的框架,诸如Web,JPA,Thymeleaf时,这些框架和特性会存放在Classpath里面。
  2. 在Spring Boot中,有个名为spring-boot-autoconfigure的JAR文件,其中包含了很多配置类,每个配置类都有机会对应Classpath的配置,为程序添砖加瓦。比如有些用于JAP的配置,有些用于Spring MVC的配置,你完全可以自己选择是否使用它们。

上面的过程基于一个核心特性——Spring 4的条件化配置。它能够在满足特定条件之前忽略这些配置,就是只有当你明确声明使用这一功能它才会使用。

覆盖自定义配合——让我的程序有所不同

  • Spring Boot的自动配置像是一份特色披萨,你完全可以自选其配料,这时候你就需要自定义配置。
    自定义配置有两种方式。
  1. 使用显示配置进行覆盖。大多数情况下,自动配置的Bean已经能够完成你的需求,并不需要额外去覆盖他们。但是在某些情况下,自动配置做的还不够好。
  2. 使用属性进行精细化配置。Spring Boot自动配置的Bean有300多个属性能够对Bean进行微调。

Spring Boot的部署

  • Spring Boot内嵌了Tomcat,他并没有web.xml对Servlet进行初始化,一个不能对Servlet初始化的war包文件一无是处,并不能部署到Tomcat下面。

这时候我们需要Spring Boot提供的SpringBootServletInitializer类,我们需要去继承这个类去做一些重新,之后利用mvn打包的时候,就能打包出一个能够对Servlet初始化的war包。

  • 同样的如果是内嵌了数据库,我们要做数据库迁移。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值