之前就接触过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选择如下:
下一步:
注意:一般我们建立web项目,一定要选择war!!!要不然后面自动生成的pom文件中没有spring-boot-starter-web!!
下一步:
选择需要的Dependency,然后点击finish
在这里我选了MySQL 和mybatis和web 三个依赖,然后点击完成。如果是JDBC或者Oracle,你可以自行选择数据库驱动。
等待创建项目,要等一段时间,因为在下载jar。
下面是项目的主要结构:
大家可以打开pom文件,可以看到以下几个部分:
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构建项目
项目结构介绍
Spring Boot的基础结构共三个文件:
另外,spingboot建议的目录结果如下:
root package结构:com.example.myproject
com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- controller
| +- CustomerController.java
|
采用默认配置可以省去很多配置,当然也可以根据自己的喜欢来进行更改
最后,启动Application main方法,至此一个java项目搭建好了!
引入web模块
1、pom.xml中添加支持web的模块:
org.springframework.boot
spring-boot-starter-web
pom.xml文件中默认有两个模块:
spring-boot-starter
:核心模块,包括自动配置支持、日志和YAML;
spring-boot-starter-test
:测试模块,包括JUnit、Hamcrest、Mockito。
2、编写controller内容:
@RestController
public 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
江湖险恶,我从来都不轻易留下我的名字------周星驰