1.1 SpringBoot 基础
1.1.1 Spring框架介绍
Spring是一个开源Java轻量级框架。Spring是为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情。但是Spring不仅仅局限于服务器端开发,也为 Java应用提高了简单性、可测试性和松耦合性等。Spring已经集成了20多个模块,这些模块主要被分如下图所示的核心容器、数据访问/集成,、Web、AOP、工具、消息和测试等模块。Spring 框架如下图所示:
-
(1) Core Container 核心容器
核心部分分为4大块,spring-core, spring-beans, spring-context, spring-expression. 其中core和bean是整个框架的核心,提供了基础的DI(依赖注入)和IOC(控制反转)功能。 Context建立在core和beans模块之上,提供一种类似JNDI且以框架的方式来操作对象的方式。Context模块从beans模块继承它的功能同时增加了国际化支持,如资源绑定等,同时,Context模块也支持JavaEE功能,如EJB,JMX和基本的远程调用。ApplicationContext接口是context模块的焦点。expression是一种很强大的expression language,支持在运行时查询和操作对象的属性,我们会在后面的文章中举些例子来说明spring expression language的用法。 -
(2) AOP and instrumentation
Aop模块提供了面向切面编程的实现,和AspectJ集成。 -
(3) Messaging
Messaging是spring4新增加的模块,包含了一部分主要的基于message的应用的实现。 -
(4) Data Access/Integration
Data access顾名思义,是spring对数据层提供的支持,是功能比较丰富的模块。提供了包括JDBC,事物,ORM,JMS等一系列实现。 -
(5) Web
Web模块主要提供面向web的一些实现,例如多文件上传,servlet监听器以及spring mvc方面的支持。
(6) Test
Test模块主要是针对spring的各个模块做各种各样的测试,包括单元测试、集成测试等等。
1.1.2 SpringBoot框架介绍
SpringBoot并非Spring官方的框架,而是由Pivotal 团队(这里就不介绍这个团队了)在Spring上二次开发并开源公布出来的一个比 Spring更为简化的开发的框架。简而言之,SpringBoot就是一个轻量级,简化配置和开发流程的web整合框架。我们在使用SpringBoot时只需要做相应的配置就可以用所有的Spring组件,不需要像SpringMVC那样手动写一堆xml配置。从本质上来说,Spring Boot就是Spring,它简化了很多开发者利用Spring框架进行开发时,都需要进行的配置。那么它到底有什么功能呢?与Spring相比又有什么优势呢?
1.1.2.1 SpringBoot的核心功能
- (1) 可独立运行Spring项目
SpringBoot 可以以jar包形式独立运行,运行一个Spring Boot项目只需要通过java -jar xx.jar来运行。 - (2) 内嵌servlet容器
SpringBoot可以选择内嵌Tomcat、jetty或者Undertow,这样我们无须以war包形式部署项目。 - (3) 提供starter简化Maven配置
Spring提供了一系列的start pom来简化Maven的依赖加载,例如,当你使用了spring-boot-starter-web,会自动加入如图5-1所示的依赖包。 - (4) 自动装配Spring
SpringBoot会根据在类路径中的jar包,类、为jar包里面的类自动配置Bean,这样会极大地减少我们要使用的配置。当然,SpringBoot只考虑大多数的开发场景,并不是所有的场景,若在实际开发中我们需要配置Bean,而SpringBoot灭有提供支持,则可以自定义自动配置。 - (5) 准生产的应用监控
SpringBoot提供基于http ssh telnet对运行时的项目进行监控。 - (6) 无代码生产和xml配置
SpringBoot不是借助与代码生成来实现的,而是通过条件注解来实现的,这是Spring4.x提供的新特性。
1.1.2.2 SpringBoot的优点
-
编码更简单
SpringBoot采用 JavaConfig的方式,对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率。 -
配置更简单
SpringBoot提供许多默认配置,同时也支持自定义配置, SpringBoot项目只需一个配置文件:application.properties或者application.yml。不必担心查找配置错误的定位。 -
部署更简单
SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了,SpringBoot的项目可以打成一个jar包,然后通过Java -jar xxx.jar来运行(SpringBoot项目的入口是一个main方法,运行该方法即可)。 -
监控更简单
SpringBoot提供了actuator包,可以使用它来对应用进行监控。主要提供功能有如下截图