Spring Boot【快速入门】
本文内容纲要:
-SpringBoot概述
-SpringBoot快速搭建
-解析SpringBoot项目
-SpringBoot使用
未获得良好的阅读体验,请访问原文地址:传送门
SpringBoot概述
**BuildAnythingwithSpringBoot:**SpringBootisthestartingpointforbuildingallSpring-basedapplications.SpringBootisdesignedtogetyouupandrunningasquicklyaspossible,withminimalupfrontconfigurationofSpring.
上面是引自官网的一段话,大概是说:SpringBoot是所有基于Spring开发的项目的起点。SpringBoot的设计是为了让你尽可能快的跑起来Spring应用程序并且尽可能减少你的配置文件。
什么是SpringBoot
- 它使用“习惯优于配置”(项目中存在大量的配置,此外还内置一个习惯性的配置,让你无须)的理念让你的项目快速运行起来。
- 它并不是什么新的框架,而是默认配置了很多框架的使用方式,就像Maven整合了所有的jar包一样,SpringBoot整合了所有框架(引自:springboot(一):入门篇——纯洁的微笑)
使用SpringBoot有什么好处
回顾我们之前的SSM项目,搭建过程还是比较繁琐的,需要:
- 1)配置web.xml,加载spring和springmvc
- 2)配置数据库连接、配置日志文件
- 3)配置家在配置文件的读取,开启注解
- 4)配置mapper文件
- .....
而使用SpringBoot来开发项目则只需要非常少的几个配置就可以搭建起来一个Web项目,并且利用IDEA可以自动生成生成,这简直是太爽了...
- 划重点:简单、快速、方便地搭建项目;对主流开发框架的无配置集成;极大提高了开发、部署效率。
SpringBoot快速搭建
第一步:新建项目
选择SpringInitializr,然后选择默认的url点击【Next】:
然后修改一下项目的信息:
勾选上Web模板:
选择好项目的位置,点击【Finish】:
如果是第一次配置SpringBoot的话可能需要等待一会儿IDEA下载相应的依赖包,默认创建好的项目结构如下:
项目结构还是看上去挺清爽的,少了很多配置文件,我们来了解一下默认生成的有什么:
- SpringbootApplication:一个带有main()方法的类,用于启动应用程序
- SpringbootApplicationTests:一个空的Junit测试了,它加载了一个使用SpringBoot字典配置功能的Spring应用程序上下文
- application.properties:一个空的properties文件,可以根据需要添加配置属性
- pom.xml:Maven构建说明文件
第二步:HelloController
在【cn.wmyskxz.springboot】包下新建一个【HelloController】:
packagecn.wmyskxz.springboot;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.RestController;
/**
*测试控制器
*
*@author:@我没有三颗心脏
*@create:2018-05-08-下午16:46
*/
@RestController
publicclassHelloController{
@RequestMapping("/hello")
publicStringhello(){
return"HelloSpringBoot!";
}
}
- @RestController注解:该注解是@Controller和@ResponseBody注解的合体版
第三步:利用IDEA启动SpringBoot
我们回到SpringbootApplication这个类中,然后右键点击运行:
- 注意:我们之所以在上面的项目中没有手动的去配置Tomcat服务器,是因为SpringBoot内置了Tomcat
等待一会儿就会看到下方的成功运行的提示信息:
可以看到我们的Tomcat运行在8080端口,我们来访问“/hello
”地址试一下:
可以看到页面成功显示出我们返回的信息。
解析SpringBoot项目
这一部分参考自:SpringBoot干货系列(一)优雅的入门篇——嘟嘟独立博客
解析pom.xml文件
让我们来看看默认生成的pom.xml文件中到底有一些什么特别:
<?xmlversion="1.0"encoding="UTF-8"?>
<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.0</modelVersion>
<groupId>cn.wmyskxz</groupId>
<artifactId>springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot</name>
<description>DemoprojectforSpringBoot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/><!--lookupparentfromrepository-->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
我们可以看到一个比较陌生一些的标签<parent>
,这个标签是在配置SpringBoot的父级依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/><!--lookupparentfromrepository-->
</parent>
有了这个,当前的项目才是SpringBoot项目,spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖,使用它之后,常用的包依赖就可以省去version标签。
关于具体SpringBoot提供了哪些jar包的依赖,我们可以查看本地Maven仓库下:\repository\org\springframework\boot\spring-boot-dependencies\2.0.1.RELEASE\spring-boot-dependencies-2.0.1.RELEASE.pom文件来查看,挺长的...
应用入口类
SpringBoot项目通常有一个名为*Application的入口类,入口类里有一个main方法,这个main方法其实就是一个标准的Javay应用的入口方法。
@SpringBootApplication是SpringBoot的核心注解,它是一个组合注解,该注解组合了:@Configuration、@EnableAutoConfiguration、@ComponentScan;若不是用@SpringBootApplication注解也可以使用这三个注解代替。
- 其中,@EnableAutoConfiguration让SpringBoot根据类路径中的jar包依赖为当前项目进行自动配置,例如,添加了spring-boot-starter-web依赖,会自动添加Tomcat和SpringMVC的依赖,那么SpringBoot会对Tomcat和SpringMVC进行自动配置。
- SpringBoot还会自动扫描@SpringBootApplication所在类的同级包以及下级包里的Bean,所以入口类建议就配置在grounpID+arctifactID组合的包名下(这里为cn.wmyskxz.springboot包)
SpringBoot的配置文件
SpringBoot使用一个全局的配置文件application.properties或application.yml,放置在【src/main/resources】目录或者类路径的/config下。
SpringBoot不仅支持常规的properties配置文件,还支持yaml语言的配置文件。yaml是以数据为中心的语言,在配置数据的时候具有面向对象的特征。
SpringBoot的全局配置文件的作用是对一些默认配置的配置值进行修改。
- 简单实例一下
我们同样的将Tomcat默认端口设置为8080,并将默认的访问路径从“/
”修改为“/hello
”时,使用properties文件和yml文件的区别如上图。
- 注意:yml需要在“
:
”后加一个空格,幸好IDEA很好地支持了yml文件的格式有良好的代码提示;
- 我们可以自己配置多个属性
我们直接把.properties后缀的文件删掉,使用.yml文件来进行简单的配置,然后使用@Value来获取配置属性:
重启SpringBoot,输入地址:localhost:8080/hello能看到正确的结果:
- 注意:我们并没有在yml文件中注明属性的类型,而是在使用的时候定义的。
你也可以在配置文件中使用当前配置:
仍然可以得到正确的结果:
- 问题:这样写配置文件繁琐而且可能会造成类的臃肿,因为有许许多多的@Value注解。
- 封装配置信息
我们可以把配置信息封装成一个类,首先在我们的name和age前加一个student前缀,然后新建一个StudentProperties的类用来封装这些信息,并用上两个注解:
- @Component:表明当前类是一个JavaBean
- @ConfigurationProperties(prefix="student"):表示获取前缀为sutdent的配置信息
这样我们就可以在控制器中使用,重启得到正确信息:
SpringBoot热部署
在目前的SpringBoot项目中,当发生了任何修改之后我们都需要重新启动才能够正确的得到效果,这样会略显麻烦,SpringBoot提供了热部署的方式,当发现任何类发生了改变,就会通过JVM类加载的方式,加载最新的类到虚拟机中,这样就不需要重新启动也能看到修改后的效果了。
- 做法也很简单,修改pom.xml即可!
我们往pom.xml中添加一个依赖就可以了:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional><!--这个需要为true热部署才有效-->
</dependency>
重新启动SpringBoot,然后修改任意代码,就能观察到控制台的自动重启现象:
关于如何在IDEA中配置热部署:传送门
SpringBoot使用
上面已经完成了SpringBoot项目的简单搭建,我们仅仅需要进行一些简单的设置,写一个HelloController就能够直接运行了,不要太简单...接下来我们再深入了解一下SpringBoot的使用。
SpringBoot支持JSP
SpringBoot的默认视图支持是Thymeleaf模板引擎,但是这个我们不熟悉啊,我们还是想要使用JSP怎么办呢?
- 第一步:修改pom.xml增加对JSP文件的支持
<!--servlet依赖.-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--tomcat的支持.-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
- 第二步:配置试图重定向JSP文件的位置
修改application.yml文件,将我们的JSP文件重定向到/WEB-INF/views/目录下:
- 第三步:修改HelloController
修改@RestController注解为@Controller,然后将hello方法修改为:
- 第四步:新建hello.jsp文件
在【src/main】目录下依次创建webapp、WEB-INF、views目录,并创建一个hello.jsp文件:
- 第五步:刷新网页
因为我们部署了热部署功能,所以只需要等待控制台重启信息完成之后再刷新网页就可以看到正确效果了:
- 关于404,使用spring-boot:run运行项目可以解决:
集成MyBatis
- 第一步:修改pom.xml增加对MySql和MyBatis的支持
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
- 第二步:新增数据库链接参数
这里我们就直接使用之前创建好的student表了吧:
- 第三步:创建Student实体类和StudentMapper映射类
在【cn.wmyskxz.springboot】下新建一个【pojo】包,然后在其下创建一个Student类:
publicclassStudent{
privateIntegerid;
privateIntegerstudent_id;
privateStringname;
privateIntegerage;
privateStringsex;
privateDatebirthday;
/*getterandsetter*/
}
在【cn.wmyskxz.springboot】下新建一个【mapper】包,然后在其下创建一个StudentMapper映射类:
packagecn.wmyskxz.springboot.mapper;
importcn.wmyskxz.springboot.pojo.Student;
importorg.apache.ibatis.annotations.Mapper;
importorg.apache.ibatis.annotations.Select;
importjava.util.List;
@Mapper
publicinterfaceStudentMapper{
@Select("SELECT*FROMstudent")
List<Student>findAll();
}
- 第四步:编写StudentController
在【cn.wmyskxz.springboot】下新建一个【controller】包,然后在其下创建一个StudentController:
packagecn.wmyskxz.springboot.controller;
importcn.wmyskxz.springboot.mapper.StudentMapper;
importcn.wmyskxz.springboot.pojo.Student;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.stereotype.Controller;
importorg.springframework.ui.Model;
importorg.springframework.web.bind.annotation.RequestMapping;
importjava.util.List;
/**
*Student控制器
*
*@author:@我没有三颗心脏
*@create:2018-05-08-下午20:25
*/
@Controller
publicclassStudentController{
@Autowired
StudentMapperstudentMapper;
@RequestMapping("/listStudent")
publicStringlistStudent(Modelmodel){
List<Student>students=studentMapper.findAll();
model.addAttribute("students",students);
return"listStudent";
}
}
第五步:编写listStudent.jsp文件
我们简化一下JSP的文件,仅显示两个字段的数据:
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>
<tablealign='center'border='1'cellspacing='0'>
<tr>
<td>id</td>
<td>name</td>
</tr>
<c:forEachitems="${students}"var="s"varStatus="st">
<tr>
<td>${s.id}</td>
<td>${s.name}</td>
</tr>
</c:forEach>
</table>
- 第六步:重启服务器运行
因为往pom.xml中新增加了依赖的包,所以自动重启服务器没有作用,我们需要手动重启一次,然后在地址输入:localhost:8080/listStudent查看效果:
以上。
参考资料:
how2j.cn-SpringBoot系列教程
欢迎转载,转载请注明出处!
简书ID:@我没有三颗心脏
github:wmyskxz
欢迎关注公众微信号:wmyskxz_javaweb
分享自己的JavaWeb学习之路以及各种Java学习资料
本文内容总结:SpringBoot概述,SpringBoot快速搭建,解析SpringBoot项目,SpringBoot使用,
原文链接:https://www.cnblogs.com/wmyskxz/p/9010832.html