创建SpringBoot工程
可以直接采用https://start.spring.io/ 生成工程,也可以按照官方教程进行工程创建 http://projects.spring.io/spring-boot/
1、引入需要的pom
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2、编写一个controller
package hello;
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@Controller
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
3.运行main方法,启动web工程,访问http://localhost:8080/
整个web工程搭建完成,也就是所谓的光速创建
其中涉及到的几个概念如下:
应用入口类
main是标准的Java应用main方法,主要作用是作为项目启动的入口。
Application
起步依赖 spring-boot-starter-xx
Spring Boot提供了很多”开箱即用“的依赖模块,都是以spring-boot-starter-xx作为命名的。举个例子来说明一下这个起步依赖的好处,比如组装台式机和品牌机,自己组装的话需要自己去选择不同的零件,最后还要组装起来,期间有可能会遇到零件不匹配的问题。耗时又消力,而品牌机就好一点,买来就能直接用的,后续想换零件也是可以的。相比较之下,后者带来的效果更好点(这里就不讨论价格问题哈),起步依赖就像这里的品牌机,自动给你封装好了你想要实现的功能的依赖。就比如我们之前要实现web功能,引入了spring-boot-starter-web这个起步依赖。
依赖很多,所以Spring Boot通过提供众多起步依赖降低项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。很多起步依赖的命名都暗示了它们提供的某种或者某类功能。
实际上这些模块并不包含代码,主要是作为模块对各个依赖包进行封装,降低依赖配置时的复杂度。
SpringBoot里的常用注解
对于新手非常容易被里面大量的注解搞晕掉,在这里进行梳理:
@ComponentScan
@ComponentScan这个注解在Spring中很重要,它对应XML配置中的元素,@ComponentScan的功能其实就是自动扫描并加载符合条件的组件(比如@Component和@Repository等)或者bean定义,最终将这些bean定义加载到IoC容器中。
我们可以通过basePackages等属性来细粒度的定制@ComponentScan自动扫描的范围,如果不指定,则默认Spring框架实现会从声明@ComponentScan所在类的package进行扫描。
注:所以SpringBoot的启动类最好是放在root package下,因为默认不指定basePackages。
SpringBoot精要
自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。
Spring Boot会为这些常见配置场景进行自动配置。如果Spring Boot在应用程序的Classpath里发现H2数据库的库,那么它就自动配置一个嵌入式H2数据库。如果在Classpath里发现JdbcTemplate,那么它还会为你配置一个JdbcTemplate的Bean。你无需操心那些Bean的配置,Spring Boot会做好准备,随时都能将其注入到你的Bean里。
Spring Boot的自动配置远不止嵌入式数据库和JdbcTemplate,它有大把的办法帮你减轻配置负担,这些自动配置涉及Java持久化API(Java Persistence API,JPA)、Thymeleaf模板、安全和Spring MVC。
起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。
向项目中添加依赖是件富有挑战的事。你需要什么库?它的Group和Artifact是什么?你需要
哪个版本?哪个版本不会和项目中的其他依赖发生冲突?
Spring Boot通过起步依赖为项目的依赖管理提供帮助。起步依赖其实就是特殊的Maven依
赖和Gradle依赖,利用了传递依赖解析,把常用库聚合在一起,组成了几个为特定功能而定制
的依赖。
命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。
Actuator:让你能够深入运行中的Spring Boot应用程序,一探究竟。
从本质上来说,Spring Boot就是Spring,它做了那些没有它你自己也会去做的SpringBean配置。谢天谢地,幸好有Spring,你不用再写这些样板配置了,可以专注于应用程序的逻辑,这些才是应用程序独一无二的东西。
参考:
使用 Spring Boot 快速构建 Spring 框架应用
https://www.ibm.com/developerworks/cn/java/j-lo-spring-boot/
Spring Boot干货系列:(一)优雅的入门篇
http://www.cnblogs.com/zheting/p/6707032.html
Spring Boot干货系列:(二)配置文件解析http://www.cnblogs.com/zheting/p/6707036.html
Spring Boot干货系列:(三)启动原理解析
http://www.cnblogs.com/zheting/p/6707035.html
http://www.jianshu.com/p/36529384b8c6