之前就接触过springboot作为框架的项目,但是不是我自己搭建的,当时看了一下结构,和spring项目比,springboot采用注解方式简化了配置,废话不多说,咱们就手动搭建一个简单的springboot项目。
注意:现在springboot几个新版本都是基于JDK1.8的,所以我接下来的几篇文章的讲解,也全部围绕JDK1.8来。
我先讲怎么利用eclipse工具常规的创建一个spring项目,考虑到有些小伙伴急切的想创建一个最简单的项目,我会在再讲一种快速创建springboot项目的方式!
搭建过SSM框架的小伙伴可能心里有会感受,就是各种配置比较多:spring本身的配置,springMVC的配置,还有jdbc数据源的配置等等,如果没有搭建过SSM框架的小伙伴,建议你自己搜一搜搭建过程,然后有对比性的看springboot的搭建过程,这样有助于学习。
一,先创建一个springboot的maven项目
1.这里我是用的工具是eclipse,所以我们要先下载一个插件(STS),HELP---eclipse Marketplace ,search中搜索 STS,结果见下图:
然后点击安装就好了,一路next知道完成。完成后重启一下就好!
2.安装好了STS插件,就来创建项目:
在项目空白处右键:new--project,然后搜索spring选择如下:
x
下一步:
注意:一般我们建立web项目,一定要选择war!!!要不然后面自动生成的pom文件中没有spring-boot-starter-web!!
下一步:
选择需要的Dependency,然后点击finish
在这里我选了MySQL 和mybatis和web 三个依赖,然后点击完成。如果是JDBC或者Oracle,你可以自行选择数据库驱动。
等待创建项目,要等一段时间,因为在下载jar。
下面是项目的主要结构:
大家可以打开pom文件,可以看到以下几个部分:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--web应用基本环境配置,支持全栈式Web开发,包括Tomcat和spring-webmvc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入了Spring Boot默认的HTTP引擎Tomcat-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!--支持常规的测试依赖,包括JUnit、Hamcrest、Mockito以及spring-test模块-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- mybatis依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- mysql依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- spring-boot-maven-plugin插件就是打包spring boot应用的 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
PS:更多的依赖我会在后面的章节中给大家讲解,目前的上述几个配置能满足我们最低的要求了。
接下来我们创建一个简单的controller;
然后启动,那怎么启动呢?看上图的DemoApplication.java,这个类是springBoot的启动类:
看到里面的main函数,右键--run as--Spring boot App,就开始启动了,结果报错了,如下:
这是因为我们在创建项目的时候添加了数据库驱动依赖(MySQL),当项目启动的时候,springboot就会创建数据源,但是我们又没有做任何的数据源连接配置,解决方式:
(1)把pom文件中的数据库依赖注释掉;(我们可以暂时不用连接数据库)
(2)让springBoot启动的时候不去自动创建数据源:
改成@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
再启动就可以了!(如果遇到端口冲突,杀一下进程就好了,参考:https://blog.csdn.net/q343509740/article/details/80821409)
注意:我的URL里没有添加项目名,为什么呢?有很多人刚接触springboot做测试时候,在访问的时候肯定加上了项目名称,结果肯定是404。
答案:
SpringMVC的运行方式是将打成的war包放到tomcat中运行,这种情况下访问需要在url中加入项目名。SpringBoot同样可以打成war包部署,但也提供了另一种方式:直接执行public static void main()函数并启动一个内嵌的应用服务器(取决于类路径上的依赖是Tomcat还是jetty)来处理应用请求,这时是不需要添加项目名的。
====================================快速创建简单的springboot项目===================================
maven构建项目
1、访问http://start.spring.io/2、选择构建工具Maven Project、Spring Boot版本2.1.1以及一些工程基本信息,点击“Switch to the full version.”java版本选择1.8,可参考下图所示:3、点击Generate Project下载项目压缩包4、解压后,使用eclipse,Import -> Existing Maven Projects -> Next ->选择解压后的文件夹-> Finsh,OK done!项目结构介绍
Spring Boot的基础结构共三个文件:
src/main/java 程序开发以及主程序入口src/main/resources 配置文件src/test/java 测试程序另外,spingboot建议的目录结果如下:
root package结构:com.example.myproject
采用默认配置可以省去很多配置,当然也可以根据自己的喜欢来进行更改
最后,启动Application main方法,至此一个java项目搭建好了!
引入web模块
1、pom.xml中添加支持web的模块:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>pom.xml文件中默认有两个模块:
spring-boot-starter :核心模块,包括自动配置支持、日志和YAML;
spring-boot-starter-test :测试模块,包括JUnit、Hamcrest、Mockito。
2、编写controller内容:
@RestControllerpublic class HelloWorldController { @RequestMapping("/hello") public String index() { return "Hello World"; }}@RestController 的意思就是controller里面的方法都以json格式输出,不用再写什么jackjson配置的了!
3、启动主程序,打开浏览器访问http://localhost:8080/hello,就可以看到效果了,有木有很简单!
==========好了,学习到这里是不是觉得springBoot很简单啊,但是有很多细节一定要理解===========
1.DemoApplication这个类(名称可能有所区别,这个是启动类)一定要在目录的最上层,或者你的controller,service等代码的目录层级一定要比DemoApplication的目录要低,也可以同级!为什么?
答案:因为springBoot之所以简单,就是因为DemoApplication这个启动类,可以当做是一个spring容器!当这个类的main执行,它会按照规则加载它下面的所有东西并进行管理!其实和spring的道理一样。
大家可以试试,如果把我们刚建立的controller转移到DemoApplication的上级目录或者上级目录的子目录中,你再去访问就会404!
2.因为springBoot默认使用了自带的tomcat,默认的端口8080,很多时候会和别的项目端口冲突,这时候我们可以修改端口,很简单,我们下一章会讲到;
3.如何去配置项目的数据源,相比于spring,也很简单,关于配置的问题,我们在第三章(https://blog.csdn.net/qq_32317661/article/details/85784923)会讲到!
那么接下来第二章,我们讲一下,替换springboot自带的tomcat,使用我们自己的tomcat容器发布项目,地址:
https://blog.csdn.net/qq_32317661/article/details/85708032
如果你需要创建springboot+maven的父子级项目,请看我这篇文章:
https://blog.csdn.net/qq_32317661/article/details/102967216
江湖险恶,我从来都不轻易留下我的名字------周星驰