Spring boot入门学习(一)

扯淡

早些时候,我们无论是学习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 简介

  • 官网地址:https://spring.io/projects/spring-boot
  • 官网介绍,如图
    Spring boot入门学习(一)_第1张图片

    Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”.



We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.

官网对spring boot的简介,大意是说:

  • 使用Spring Boot,能很容易的创建一个基于Spring的应用程序,它不仅仅是一个独立的,生产级的应用程序,您还可以随时“运行”它。
  • 第二段大致意思是说:我们应该不要惊讶于spring和第三方平台所提供出这样强大的展现魅力,反正您只需知道Spring Boot应用程序就是只需要很少的Spring配置就能去实现很多东西。(英文能力有限,不对之处望谅解,纠正)

Spring boot 特性

官网对其特性也做了介绍

• 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容器中。

构建一个Spring boot 的maven项目

创建一个简单的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
    Spring boot入门学习(一)_第2张图片
    • 修改Group,Artifact 即自己要创建的项目的包名和项目名–> 点击Next
    Spring boot入门学习(一)_第3张图片
    • 选择spring boot版本,web项一般选择稳定版,我用2.0.3 –> 点击Next
    Spring boot入门学习(一)_第4张图片
    • finish,项目名和存放路径,点击finish,项目创建完成
    Spring boot入门学习(一)_第5张图片
    • 生成的项目结构如图,其中.mvn 、mvnw、mvnw.cmd提供构建maven项目的所需文件,mvnw.cmd是运行mvn命令的Windows脚本文件,mvnw是适合Linux平台的脚本文件,若本地安装了maven,其可删除掉。
    Spring boot入门学习(一)_第6张图片
    • 项目自动生成了一个以项目名+Application的入口类,里面有个main方法,用于启动项目,当前application.properties文件没写入任何配置信息,Spring Boot默认启动端口为8080。
    在入口类右击,点击run或debug启动项目,如图
    Spring boot入门学习(一)_第7张图片

    启动控制台打印信息
    Spring boot入门学习(一)_第8张图片
    • 打开浏览器访问localhost:8080 。会看到一个错误页面,因为当前还未加入任何可访问的页面
    Spring boot入门学习(一)_第9张图片
    不想看到这个错误提示,可以在static下加入一个index.html文件(默认文件必须是index.html才能被默认访问到),如我的页面

    
    <htmllang="en">
    <head>
    <metacharset="UTF-8">
    <title>springbootdefaultindexpagetitle>
    head>
    <body>
    Hello,springboot2.0.3webdefaultpage.
    body>
    html>

    再次访问localhost:8080 ,效果如图
    Spring boot入门学习(一)_第10张图片

  • 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!
    Spring boot入门学习(一)_第11张图片
    有的会用@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中该命令位置如图
    Spring boot入门学习(一)_第12张图片
    • 使用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项目了,当然我这里只是简单的学习介绍,许多东西需要去继续学习,研究,才能发现其美妙之处,或许其真能让你从此爱不释手呢。将复杂的东西简单化,应该是一种追求,不仅仅是写代码,更是生活。

demo项目源码地址

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/

你可能感兴趣的:(小话技术,spring,boot,java)