早些时候,我们无论是学习java,还是使用java开发项目,都会听到“三大框架”:SSH,即:Spring、Struts、Hibernate。若不会使用三大框架,或者不知道三大框架,那工作面试基本就会被pass,当然什么是三大框架,不是我要述说的重点。
记得,刚开始工作的时候,在一个很小的公司里,就我一个技术,接手开发维护一个短信信息发送监管平台,其代码当时用的是Struts1,我学习java的时候已经是Struts2版本了,那时候Struts1渐渐都被Struts2替代了,许多公司都已经使用Struts2作为开发框架了。工作一年多,觉得一个人的开发,难以长久生存下去。离职换工作,面试期间许多公司都会问及三大框架的使用,可想而知那时候的三大框架是很火的。接着我在另一个小公司里做开发,从入职到最后,没想到还是我一人在战斗,期间虽有过几次离职的想法,然而,那时自身带着朋友义气,顾及经理的情面,诚心诚意的挽留,没能离去,一个人踏踏实实的为其工作了三年整。
三年后我另寻工作,面试期间已经不是三大框架的天下了,springMVC已大行其道,而我这几年,还在使用着繁琐的三大框架进行web整合开发,了解,学习使用springMVC势在必行。好在这些流行的技术都是基于Spring,因此学会使用,对于已入了门的开发者来说,只需要一两天的时间而已,只要你愿意:“JUST DO IT”。
又工作了一年后,某天我游走在网络里,懒懒散散的看着一些杂七杂八的IT相关的信息,Spring boot蹦入我的眼球,这是什么呢,工作这么多年,我对spring始终是停留在只是使用其一二,她却一直在默默的更新改变,无私奉献。
我坚信,每一个新事物的出现,必将是让复杂变简单,让简单更优美。学习就是对其最好的真爱,那就来了解Spring boot吧,什么时候学,都为时不晚。
以上都是我在瞎扯淡,朋友们可忽略。
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”.
官网对其特性也做了介绍
• Create stand-alone Spring applications
• Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
• Provide opinionated ‘starter’ dependencies to simplify your build configuration
• Automatically configure Spring and 3rd party libraries whenever possible
• Provide production-ready features such as metrics, health checks and externalized configuration
• Absolutely no code generation and no requirement for XML configuration
• 创建独立的Spring 应该程序;
• 能够使用内嵌的Tomcat, Jetty or Undertow(不需要部署war文件);
• 提供定制化的’starter’依赖以简化maven构建配置(其实就是通过maven将原本需要一个个引入的jar包,整合起来);
• 尽可能的自动配置Spring和第三方库;
• 提供一些生产环境的特性,比如特征指标,健康检查和外部配置;
零代码生成和零XML配置。
因此,通过官网介绍,我们能大致知道,Spring Boot集成出大量的第三方库,简化依赖引入, 能更容易的让开发者创建基于spring的应用程序和服务,快速获得所需要的spring功能,尽可能减少很多繁琐的配置文件,摒弃了XML的配置,非常少量的配置代码让开发者更多的专注于业务逻辑,并且它是可独立运行于生产的,其默认集成了web容器(默认tomcat),可打成jar包,像普通java程序一样通过main函数入口启动,当然也可以将项目打成war包,放到自己配置的web容器中。
创建一个简单的springboot-demo-01 web项目,能正确启动
Maven整合SSM参考链接:https://blog.csdn.net/keli88/article/details/80890683
运行环境
• JDK:推荐使用jdk1.8及以上;
• 系统:Windows10;
• 工具:idea2018.1
• Spring Boot:2.0.3
创建springboot-01(可通过maven创建项目,手动引入相应的依赖包,自己纯手动搭建一个springboot项目,不过这样不是很快速,因此,我推荐使用idea已集成的插件:Spring Initializr,快速创建一个spring boot项目。)
• 选择File –> New –> Project –>Spring Initialer –> 点击Next
• 修改Group,Artifact 即自己要创建的项目的包名和项目名–> 点击Next
• 选择spring boot版本,web项一般选择稳定版,我用2.0.3 –> 点击Next
• finish,项目名和存放路径,点击finish,项目创建完成
• 生成的项目结构如图,其中.mvn 、mvnw、mvnw.cmd提供构建maven项目的所需文件,mvnw.cmd是运行mvn命令的Windows脚本文件,mvnw是适合Linux平台的脚本文件,若本地安装了maven,其可删除掉。
• 项目自动生成了一个以项目名+Application的入口类,里面有个main方法,用于启动项目,当前application.properties文件没写入任何配置信息,Spring Boot默认启动端口为8080。
在入口类右击,点击run或debug启动项目,如图
启动控制台打印信息
• 打开浏览器访问localhost:8080 。会看到一个错误页面,因为当前还未加入任何可访问的页面
不想看到这个错误提示,可以在static下加入一个index.html文件(默认文件必须是index.html才能被默认访问到),如我的页面
<htmllang="en"> <head> <metacharset="UTF-8"> <title>springbootdefaultindexpagetitle> head> <body> Hello,springboot2.0.3webdefaultpage. body> html>
pom文件里已经自动引入了Spring Boot所需的依赖包
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.lk.springboot.demogroupId>
<artifactId>springboot-demo-01artifactId>
<version>0.0.1-SNAPSHOTversion>
<packaging>jarpackaging>
<name>springboot-demo-01name>
<description>DemoprojectforSpringBootdescription>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.0.3.RELEASEversion>
<relativePath/>
parent>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
<java.version>1.8java.version>
properties>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
project>
它与普通的springMVC项目的maven配置有何区别呢,它有一个自己的父级依赖
org.springframework.boot
spring-boot-starter-parent
2.0.3.RELEASE
有了这个,当前的项目就是Spring Boot项目了,spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖,使用它之后,常用的包依赖可以省去version标签。
application.properties配置文件,初始是一个空的文件,你可根据需要添加所需配置
可以在这里配置许多东西,如启动端口,应用程序名称,日志文件配置,数据库连接信息,连接池配置,redis配置,缓存配置,邮件服务属性配置,文件上传配置,文件编码属性等等配置。如我这里指定一个端口配置
server.port=8011
重新启动项目,访问端口由原来的8080改为8011即可。
SpringbootDemo01Application是Spring Boot项目的启动类,程序的入口
package com.lk.springboot.demo.springbootdemo01;
Import org.springframework.boot.SpringApplication;
Import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootDemo01Application{
public static void main(String[] args){
SpringApplication.run(SpringbootDemo01Application.class,args);
}
}
@SpringBootApplication是Spring Boot项目的核心注解,主要目的是开启自动配置。main是一个标注的java应用的main方法,主要作为项目的启动入口。
新建一个控制层HelloController类
packagecom.lk.springboot.demo.springbootdemo01.controller;
importorg.springframework.stereotype.Controller;
importorg.springframework.ui.Model;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.ResponseBody;
/**
*@authorkexl
*@Title:spring-boot-demo
*@Packagecom.lk.springboot.demo.springbootdemo01.controller
*@Description:springboot控制层demo
*@date2018/7/1014:16
*/
@Controller
public class HelloController{
@RequestMapping("indexjsp")
public String index(Model model){
model.addAttribute("name","jsp您好!");
return "index";
}
@RequestMapping("hello")
@ResponseBody
public String hello(){
return "hello spring boot!";
}
}
访问localhost:8011/hello,浏览器输错:hello spring boot!
有的会用@RestController,其实它等同于@Controller+@ResponseBody的组合,即使用了@RestController就无需写@ResponseBody,大家可新建一个类自行测试。
注意:Spring Boot自动扫描包的范围是与启动类同包及其子包下的类,如我的项目启动类包为com.lk.springboot.demo.springbootdemo01,只会扫描到com.lk.springboot.demo.springbootdemo01及其子包下,若超过这个包范围外的bean是不能被扫描到的,将无法被自动注入。
上面我写了个请求index.jsp页面的地址映射,并不能访问jsp页面,其实细心你肯定发现这个项目没有生成如springmvc中的webapp目录,那Spring Boot支持jsp页面吗,当然是支持的,因为Spring Boot 支持模板引擎,官方建议大家使用thymeleaf模板,不推荐使用jsp罢了。那若要支持使用jsp又该如何配置呢,且看下回分解。
启动项目三种方式,本文的第二部分已经展示了一种启动方式。下面说说另外两种
• 使用maven命令mvn spring-boot:run,在idea命令行启动应用,idea中该命令位置如图
• 使用maven命令mvn package打包,会打包成一个可直接运行的jar文件,使用java命令java -jar 项目名就可启动项目
如我将我的项目生成的jar改名为springboot-demo-01.jar放到我的d:/springboot 目录下,运行cmd执行命令java -jar springboot-demo-01.jar,启动成功后访问localhost:8011/hello。
- springboot-demo-01.jar下载地址:
https://gitee.com/keli88/spring-boot-demo/tree/master/springboot-demo-01/file-jar
使用Spring Boot创建一个web项目是不是so easy,很少的配置就能创建一个独立运行且能用于准生产级别的基于spring的项目,使用了它是不是再也不想用以前的方式创建springMVC项目了,当然我这里只是简单的学习介绍,许多东西需要去继续学习,研究,才能发现其美妙之处,或许其真能让你从此爱不释手呢。将复杂的东西简单化,应该是一种追求,不仅仅是写代码,更是生活。
https://gitee.com/keli88/spring-boot-demo/tree/master/springboot-demo-01
纯洁的微笑博客: http://www.ityouknow.com/springboot/2016/01/06/spring-boot-quick-start.html;
嘟嘟独立博客: http://tengj.top/2017/02/26/springboot1/
hangqunfeng’blog: https://blog.hanqunfeng.com/2016/12/09/spring-boot-study/