Spring Boot其实就是spring,为了简便spring框架的搭建,快速开发项目而推出的另一种方式。使用spring boot,搭建框架将变得特别快。可以有更多的时间在代码性能上优化了。
一、Spring Boot个人感觉的优点:
1)搭建一个简单运行的框架很快,仅仅就是几个依赖就可以了。
2) 很多的配置,可以不用写XML配置文件,只需要写在一个统一的配置文件里(默认是application.properties/application.yml)或者使用java类的形式写配置类。
3)简化了很多啰嗦的配置,提高项目搭建效率。比如数据库的dataSource、sqlSessionFactory等等。
二、 Spring Boot个人感觉的缺点:
1) 配置不全面,很多以前在XML里的详细配置,到了spring boot里就很难设置的那么详细,当然肯定也有方法设置,比如额外的XML配置可以引入启动。
2) 设置简洁,但是前提也要知道如何设置,很多功能的设置还要从网上一点点的搜出来,不过谁都有第一次,知道如何设置了,下一次搭建起来就感觉很清爽了。
3)默认设置太多,到现在领导让我查下spring boot的内嵌tomcat版本是多少,线程数和连接数,以及内存,这些必要的东西都是多少,应该如何设置。
4)必须依靠Maven那种根据依赖引入jar包的项目管理工具,这我也不知道是缺点还是优点,感觉没有像maven这种工具,它完全发挥不出作用了。
三、Spring boot简单实例----创建可以访问页面的小项目
1、首先创建一个Maven project,在pom.xml里导入如下依赖
<!-- Spring Boot 启动父依赖 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.1.RELEASE</version></parent>
<!-- Spring Boot Web 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
注意:我们都知道每个项目里都只有一个parent标签,如果你的项目是父子项目(创建方法请看:http://blog.csdn.net/wohaqiyi/article/details/71757480),那这里的parent标签内容就要粘到你的父项目里的pom.xml里即可,如果还有爷爷项目,那就再到爷爷项目里粘上就可以了,哈哈。如果你将以上两个依赖引入后,更新下项目,不出意外,在Maven的jar包里就会有以下内容:
还有下边这张图:
2.通过上边的两张图可以看出来,基本的一个spring 项目所需要的jar包都全了。接着往下说。
Spring Boot项目默认是jar包形式,但是我试了建成war包,也没影响,war包即是可以到tomcat里运行的,但是通过上边的图可以看到spring boot默认有内嵌的tomcat容器,也就是说spring boot运行并不依赖tomcat容器,它的运行是通过一个main方法运行项目的。
首先,它的运行类,应该处在包结构的最上方,如下边这个:
3. 为什么会有这样的要求呢?
传统的spring 项目的bean的初始化都是需要配置扫描位置,即创建各种bean标签等等,这样在容器启动后才能实例这些bean,而spring boot没有那些配置文件,它的扫描,就是从启动类的位置开始,向下级包扫描,将所需的bean纳入它的容器里。
请注意:spring boot可以和很多东西结合,它本身就是个spring 项目,只是方法不同了而已,如果大家在以后运行spring boot项目出现某个bean不存在,或者找不到某个类的情况,请试试把那个类的位置往低级包里放下,可能容器在调用该类的时候,spring boot还没有扫描到这个类,所以出现该类不存在的情况,当然这只是可能的原因。(尤其spring boot与dubbo结合的时候,基本都是这个原因)
4.创建启动类
在项目的靠上位置写一个启动类,如下:
package test.spring;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication //spring boot启动必须引入的注解
public class SpringBootTest {public static void main(String[] args) {SpringApplication.run(SpringBootTest.class, args);}
}
关于@SpringBootApplication注解的解释请自己百度下吧。
5.创建Controller
package test.spring.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {@RequestMapping(value="abc/akf",method=RequestMethod.GET)public String abc(String name){return "姓名:"+name;}
}
Spring Boot里的Controller注解是@RestController,而且它的返回json格式不需要加@ResponseBody注解,默认就是json格式,但是有一点如果你返回的是jsp或者静态页面等等,你还是需要用@Controller注解 。
6.配置文件
Spring Boot配置文件默认就一个,就是application.properties或者application.yml,这是两种书写格式,它的放置位置在src/main/resource下。如下图所示:
以上配置的内容即配置了端口号和项目名称,如果不配置项目名称,默认是/,也就是localhost:8081,如果配置上项目名称,就变成了localhost:8081/springboot
7.启动项目
运行启动类的main方法即可,查看控制台如下:
补充一下上图:可以看到日志打印有一定的规则,其实spring boot默认是用的logback日志打印,但是刚才并没有配置日志的相关信息,这个日志打印来自于哪里呢?
我的Spring Boot是来自于引入的spring-boot-1.5.1.RELEASE.jar,在该jar包里有如下位置:
也就是说它的打印规则其实就是按照这几个文件配置的进行打印。如果想自行配置日志,会在下一篇文章中说spring boot配置logback日志。
8、页面访问
启动完项目之后,访问如下路径,即可获取到返回值。