在准备好开发环境之后,你肯定有这样的疑惑,我如何新建一个项目?搁在以前,一般是通过IDE的“New Project”菜单,跟着引导一步一步来创建项目。现在Spring Boot提供了一种更加统一的方式,使用Spring Initializr(start.spring.io)。(这需要到指令,这里不建议。有想法可以去搜教程,个人认为很繁琐)
idea创建SpringBoot项目
工具构建选择:Springboot2.0+SpringMvc+Thymeleaf+SpringDataJPA+MySql+Redis项目
1.使用idea创建Springboot项目,选择SpringInitializr选好jdk版本点击下一步
2.填写项目包名及java版本
3.勾选你需要的项目组件,Springboot版本我使用2.0
Lombok可以简化代码量,提供注解方式代替重复性代码,非必须,用不用看情况,有时候很方便,新手不建议用
4.创建web项目所以勾选Web
5.模板语言勾选Thymeleaf,这个没得说,springboot官方推荐,确实很好用,当然是指3.0版本,老版本性能有短板
6.数据库持久化推荐使用JPA方式,MySQL看情况选择
7.Nosql我这里使用Redis,看你需要,可不勾选,后续需要时再引入
8.MQ可根据自己情况选择,我这里不需要,最后I/O需要一个发邮件的服务,不用的话也不需要勾选,可后续再引入(眼熟即可)
9.下一步填写项目文件名称
10.Finish后进入项目, 等待maven将相应jar到仓库即可
建议配置阿里云,下载速度很快,否则要等他下载一段时间。
二、启动SpringBoot项目(xxx为你的项目名)
1.项目加载完毕之后打开启动器xxxApplication右键run可直接启动项目,或者右上方直接启动xxxApplication
2.不出意外的话可以直接启动不会报错,没啥好说的,我列一下可能会出现的问题,这些问题基本都是由于前面勾选项目组件(即jpa,mysql等)时引入了需要启动注入的一些依赖或数据源缺失引起的,和Springboot版本也有很大的关系,以下报错不一定会出现。
(1)启动报错:Failed toconfigure a DataSource: 'url' attribute is not specified and no embedd
问题原因:新项目未做相关数据源配置, 启动springboot找不到配置引起
解决办法(选一即可):
1.(没配数据库):启动类xxxApplication加入注解@SpringBootApplication(exclude= DataSourceAutoConfiguration.class),禁止自动加载数据源配置
2.手动添加数据源,在application.properties加入以下配置(手打吧。有提示的。贴了排版乱死。):
(2)启动报错:At least one JPA metamodel must be present!
问题原因:Springboot自动加载持久化bean,即自动加载jpa的bean造成,
解决办法(选一即可):
① 启动类xxxApplication加上以下注解
@EnableAutoConfiguration(exclude={
JpaRepositoriesAutoConfiguration.class //禁止springboot自动加载持久化bean
})
② pom加入或更改jpa启动包,按照以下格式
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <exclusions> <exclusion> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> </exclusion> <exclusion> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> </exclusion> </exclusions></dependency><dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.10.Final</version></dependency>
排版好艰难。
pom重新导入就好了,启动项目也不再报错。
三、Hello World页面显示及Json数据回传
1.创建一个页面,跟一个controller层,(前台优先进入此层)
这里加@ResponseBody 返回的是字符串,链接网页 需要@controller 以及 @requestMapping