Create stand-alone Spring applicationsjava
Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)mysql
Provide opinionated 'starter' dependencies to simplify your build configurationgit
Automatically configure Spring and 3rd party libraries whenever possiblegithub
Provide production-ready features such as metrics, health checks and externalized configurationweb
Absolutely no code generation and no requirement for XML configurationspring
上面这段话摘自 http://spring.io/projects/spring-boot,简单介绍了Spring Boot 的优点,翻译过来就是,标准单一的Spring 应用程序,内置Tomcat,Jetty ,无需打成 war包,提供一个开始依赖来简化依赖配置,自动配置了Spring 以及第三方依赖库,提供生产特征,好比指标,健壮检查和外部化配置,绝对没有任何代码生成,而且不须要配置xml,看到这些与以往的Spring 搭建作出了巨大的优化。
sql
Jdk 1.7 +数据库
Maven 项目管理工具后端
Eclipse + Spring 插件,Idea,STSspring-mvc
Mysql 数据库
Spring Boot与简单SSM项目,作到了简化配置,它尽量将用户所需的开发依赖集中一个父类模块,咱们在搭建Spring Boot 项目的时候能够发现咱们的项目继承,以下模块
<!--父类模块 -->
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>${spring-boot-version}</version> <relativePath /> <!-- lookup parent from repository --> </parent>
该模块能够说整个项目重要组成部分,由于该父类模块定义了许多咱们在开发中须要的依赖。
除此以外,还有下几个依赖
<dependencies>
<!-- -->
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis.spring.boot.starter.version}</version> </dependency> <!-- @ConfigurationProperties --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configurationprocessor</artifactId> <optional>true</optional> </dependency> <!-- druibs数据源配置 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- mybatis pageHelper --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.6</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- swigger 配置 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency> </dependencies>
能够看到整个项目依赖是极其简单,由于咱们父类模块作了许多事,把咱们想要作的事情都作了,在早期开发SSM项目时候,有时候一个项目中咱们可能会丢失一些依赖,如今这个问题已经没有了。我说一下几个主要的依赖,
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
上面这个依赖,开启项目spring-mvc模块,你们在搭建项目的时候能够点进去看一下,能够看到以下一些细节
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.0.9.RELEASE</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.0.9.RELEASE</version> <scope>compile</scope> </dependency>
能够看到它也是把咱们的Spring Mvc 依赖给加载进来,跟咱们以前作的工做差很少,用专业点的词语就是"封装"。
同理咱们看一下以下这个依赖
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis.spring.boot.starter.version}</version> </dependency>
一样点击去看一下
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-autoconfigure</artifactId> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </dependency>
我能够看到MyBaits这几个大字出如今咱们眼前,因此仍是那个道理。
Spring Boot 自身与Spring Mvc 作了无缝链接,不须要其它依赖,咱们以前已经说过了,它自身已经集成了Spring Mvc,我要作是按照它的要求编写咱们的代码,我能够先看看SpringBoot 项目的目录结构
这是个人项目的目录结构,咱们要注意一点,代码的包必须与主类平齐,这样咱们的写的类才能被Spring Boot 程序的容器所注册或者实例化,Spring Boot 项目自己就是一个Spring 容器,在以前咱们不使用Spring Boot 项目时候,咱们不少时候都是用xml配置去注册bean,而如今是经过注解方式来注册,实例化bean,我看一下怎么来实例化bean,
我能够先看一下启动类
@SpringBootApplication(scanBasePackages="com.ysdevelop.oa") @MapperScan("com.ysdevelop.oa.dao") @EnableTransactionManagement public class YuanshengOaApplication { public static void main(String[] args) { SpringApplication.run(YuanshengOaApplication.class, args); } }
在这里我要介绍一下@SpringBootApplication,该注解开启了Spring Boot启动,我能够看看该注解作了什么
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) public @interface SpringBootApplication { }
这个注解开启了Spring ComponentScan,经过它能够去扫描咱们的本身的类中的注解,好比@Service,@Controller,@Autowired 等其余注解,除此以外还有自动化配置。这个注解一句话就是开启包扫描,以及自动化配置,我能够经过配scanBasePackages
来指定所须要的包。
可能还有一个问题,Spring Boot 程序是怎么来启动咱们的web应用,与传统war部署方式相比,如今就是作了一点改进,它把Tomcat 服务器直接内置到项目中,这样免得咱们去折腾,一旦到部署到线上,能够搭配Nginx来作反向代理来实现路由分发。
以前我简单说了一下程序的启动,如今来讲一下配置,Spring Boot 是支持yml配置,同时也支持properties配置,首先会读取application配置文件,
从配置文件中能够看出,Spring Boot 项目配置更加集中配置,数据库链接,数据源,这是主要配置,我没有贴出其它配置,可是这已经能说明Spring Boot 强大。若是项目是先后端分离的,我不须要对Spring Mvc 配置,这里还缺乏了端口配置。
还要说明必定,为了更方便项目阶段切换,Spring Boot 支持多配置文件切换,好比test,dev,pro,也能够在启动jar的时候指定配置文件。
与以前的传统的Spring 项目相比,Spring Boot 优化了配置,内嵌Tomcat服务器,去xml化,注解多元化,这是我对Spring Boot 的简单理解,不喜勿喷。