Spring-Boot快速搭建web项目详细总结
本文内容纲要:Spring-Boot快速搭建web项目详细总结
最近在学习Spring Boot 相关的技术,刚接触就有种相见恨晚的感觉,因为用spring boot进行项目的搭建是在太方便了,我们往往只需要很简单的几步,便可完成一个spring MVC项目的搭建,感觉就是下图:
好,下面就本人搭建项目的过程简单说说如何快速搭建一个spring MVC项目,相信我,spring-boot这趟车,你上了根本就停不下来了!
下面是这篇博客的主要内容:
1、spring boot 介绍
2、spring boot 项目快速搭建
3、spring-boot中单元测试
4、spring boot 与mybatis 的集成
一、初识spring boot
1、web项目传统的搭建方式
导入jar包,配置tomcat 的context.xml 、web.xml,配置class path ,启动。我靠,怎么一堆报错?classNotFoundException?尼玛哥不是导入了jar包吗,哦版本不对,那我使用maven管理jar包咯,千辛万苦终于配置好maven 并学会了如何使用,启动也没报错了,但是尼玛已经过去打半天了我都还没有开始正式代码的书写,赶紧开始写业务代码吧,又发现spring 中配置老是尼玛的报错,而我他妈只是想要搞个简单的发邮件功能啊。
所以说,自己搭建web项目,很多步骤都是重复性的,有没有什么工具可以一步达成啊?我只想快点投入到实际业务开发中去,我再也不想折腾jar包版本问题,再也不想折腾那繁琐的配置过程(虽然这是一个很好的学习过程),那么,spring boot 估计是老铁你不二的选择!
** 2、spring boot 是什么?**
什么是spring boot?直接copy官网的介绍:
原谅我并不咋地的英文,官网说,spring boot 可以让你以一种非常简单的方式构建一个机遇Application 的spring 项目,而你索要做的仅仅是run 这个项目,spring boot 集成了主流的框架,我们构建项目大概只需要两三分钟,spring boot 项目,只需要很少的配置即可。
用了spring boot 后,你会发现,什么配置问题,什么jar包问题统统没有了,你的生产效力会提高很多,因为,spring boot 已经帮你弄好了一个项目原型,你只需要在这个原型上添加自己的业务代码,自己的service 和dao就万事大吉了!
spring boot 真的有那么厉害?好,下面就开始进入正题,说说怎么搭建利用spring boot搭建项目。
2、spring boot 项目快速搭建
1、快速搭建一个spring MVC项目
** **来开头来个Hello World先吧,下面紧跟我的步伐,利用spring boot 快速搭建一个MVC项目
第一步,上官网,进行项目原始jar 包的选取,官网在线搭建地址如下:https://start.spring.io/,看图:
特别说明下:在选择你要的jar 包中,一般包括三部分:web部分--包含 了spring、springboot 等常用的web开发必须jar包;spring提供的工具类部分(devTool),这个用于热部署效果;数据库部分,spring boot自动可以帮你继承各种数据库框架,我这里以mybatis 为演示例子,最后选完jar包的效果如下:
第二步、下载项目并导入IDE,当然,需要版本管理工具的支持,这里推荐IntelliJ IDEA 开发工具(它简直就是web开发的标配!),具体看下面截图:
解压后得到项目文件,然后,就可以打开我们的IDE,这里已我最爱的IntelliJ idea为例子
打开idea,找到file-->open-->选择项目的路径,找打pom文件-->以project 形式打开
第三步、hello spring项目 大概长什么样子?打开项目之后,maven 会加载必须的jar包,这段时间,你可以去喝杯香醇的龙井茶或者咖啡,当项目构建完成之后,你会看到下面这样的典型maven目录结构:
具体各个目录放什么,请参考截图,这里补充说明的是,HelloSpringbootApplication是整个项目的入口,我们启动项目不再是启动tomcat,而是运行这个类,这个类的main方法就是整个项目的main方法即执行入口,
第四步,写hello demo了。新建一个package demo,然后新建一个类HelloSpringBoot,写入以下代码
@RestControllerpublic class HelloSpringBoot {
@RequestMapping(path = {"/helloSpringBoot"})
public String HelloSpring (){
System.out.println("hello spring boot");
return "hello spring boot";
}
}
我们先不解释这个类里面的东西,先配置并启动网站,初步感受下spring boot的魔力:
在启动网站前,由于spring boot 是默认自动注册加载数据库相关的类文件的,所以为了不报错,我们需要打开数据库并在resource目录下的application.property中加入数据库配置相关文件,这里以mysql为例子,配置文件如下:
spring.datasource.url=jdbc:mysql://localhost:3306/wenda?useUnicode=true&characterEncoding=utf8&useSSL=falsespring.datasource.username=root
spring.datasource.password=root
配置文件中各个字段含义估计读者也能看懂,后面会再具体说明。
当然,如果没有安装数据库,读者也可以在HelloSpringbootApplication 类中利用exclude属性声明不自动注册加载数据库相关文件,具体参考下面的代码:
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,MybatisAutoConfiguration.class})//这里的MybatisAutoConfiguration.class对应你的数据库框架public class HelloSpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringbootApplication.class, args);
}
}
然后,我们所有的工作就完成了,可以启动网站了,见证奇迹的时候到了。
找到 HelloSpringbootApplication类,双击打卡,右击鼠标,run,然后项目就启动了。
启动网站之后,输入http://localhost:8080/helloSpringBoot即可访问对应的方法。浏览器以及idea后台效果如图
这里简单解释下这个类里面的东西的含义:
首先是@RestController这个注解:用过spring的大佬估计知道是什么东西,当我们其他类要通过spring引用该类时,第一步就是要将该类注册到spring中,@RestController就是相当于将这个类注册到spring容器的意思当然,还有一种比较常用的就是@Controller,具体他们两区别后面再讨论吧。
然后就是@RequestMapping,通过设置这个注解里面面的path属性,就可以声明相对于项目根路径(localhost:8080)的访问路径。
** 2、spring boot 项目中利用springMVC实现传参**
上面的demo中的方法只是一个非常简单的实例,在实际生产中, 我们的应用不可能这么简单的,前端还需要传输参数到后台,所以,用spring boot 构造的项目中,又如何实现传参呢?(感觉下面的都是在总结sprign MVC相关的内内容了,所以大神勿喷我脱离主题,因为感觉spring boot 如果单独总结的话,貌似的确没什么好总结的,而且spring boot 天生就不可能和其他spring 组件分割)具体请参开下面代码例子:
@RestControllerpublic class HelloSpringBoot {/**
* url传参,访问的路径类似这样:localhost:8080/getParamDemo1/1
* 方法体中的参数要在前面加注释,@PathVariable,代表url中的参数
*/
@RequestMapping(path = {"/getParamDemo1/{id}"})
public String getParamDemo1 (@PathVariable("id") int userId){
System.out.println("get param " + userId);
return "success get param";
}
/**
* 当然,你也可以通过这种传参方式:localhost:8080/getParamDemo?param1=1或者直接表单提交参数
* 当然,同时方法中参数声明的注释也要变成@RequestParam,代表请求参数,required属性说明了参数是否是必须的
*/
@RequestMapping(path = {"/getParamDemo2"})
public String getParamDemo2 (@RequestParam(value="param1",required = false) int param){
System.out.println("get param " + param);
return "success get param";
}
}
** 3、构建restful编程风格**
最近,resultful风格编程挺火的(虽然个人觉得不可盲目跟风),而spring boot中利用其内置的spring MVC等框架,可以非常简单地实现这种编程风格。
例如说,我要请求查询一个数据,在resultful类的编程风格中,查询对应的是get请求,那么,spring boot(准确说是spring MVC) 可以针对不同的请求进行处理,请看下面代码:
@RestControllerpublic class HelloSpringBoot {
/**
* 通过设置RequestMapping的method属性便可以设置该方法可处理的对应请求了,例如下面的getRequestDemo方法只会处理get请求
*/
@RequestMapping(path = {"/getRequestDemo"},method = RequestMethod.GET)
public String getRequestDemo (@RequestParam(value="param1",required = false) int param){
System.out.println("get request test ,get param " + param);
return "success get param";
}
/**
* 下面的deleteRequestDemo方法只会处理delete请求
*/
@RequestMapping(path = {"/deleteRequestDemo"},method = RequestMethod.DELETE)
public String deleteRequestDemo (@RequestParam(value="param1",required = false) int param){
System.out.println("delete request test ,get param " + param);
return "success get param";
}
}
另外,利用上面说的url中的值(类似这个:path="/member/{userid}")进行资源定位,也非常符合resultful的风格要求,例如这path="/getParamDemo1/{userid}"的配置就是对应的就是对会员级别的某个用户(由userid定位)进行某些操作,如果要删除该用户,则对应http请求的delete请求即可。
通过上面的那些步骤,估计读者对于如何用spring boot 进行一个简单的web项目快速搭建已经清楚了,下面在spring boot搭建的项目中如何进行单元测试。
三、spring boot 项目中的单元测试问题
spring boot 中集成了junite框架,对于单元测试,也不用写各种繁琐的类了,只需要对测试类进行一定的注释,spring boot 便会帮你做好一切,就算是数据库相关的操作,spring boot 也能很好地进行测试,具体还是看代码例子,下面是一个简单的测试业务类方法的例子:
首先,我们新建一个service 层,新增一个demo类,最后的demo代码如下:
@Componentpublic class ServiceDemo {
public String testDemo(){
String rtnAfterDosomething = "我是返回结果";
//这里是业务代码
return rtnAfterDosomething;
}
}
下面的代码是测试类
@RunWith(SpringRunner.class)@SpringBootTest
public class ServiceDemoTest {
@Autowired
ServiceDemo serviceDemo;
@Test
public void testDemo() {
String rtn = serviceDemo.testDemo();
Assert.assertEquals(rtn, "我是返回结果");
}
}
如果要测试数据库dao,也是类似的,但是特别注意的是,测试之前必须启动项目(即HelloSpringbootApplication的run方法必须运行起来),否则将会包can not find ApplicationContext的错误。
四、spring boot中配置数据库框架(以mybatis为例子)
在spring boot中集成数据库相关的开源框架也是很方便的(当然,记得在一开始新建项目的时候引用相关的jar包),当你上面的步骤都没什么错误的时候,你只需要简单地配置下applocation.properties文件即可
spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8&useSSL=falsespring.datasource.username=root
spring.datasource.password=root
#下面这条配置声明了mybatis的配置文件路径,classpath对应的是和这个文件统计的resources
mybatis.config-location=classpath:mybatis-config.xml
目录的文件结构参考下面截图:
ok,mybatis 的引用配置便弄好了,下面我们尝试利用mybatis 这个数据库框架,进行一个数据库的简单查询操作,首先,看下面的mybatis-config.xml的配置内容,读者可以以这个为模板进行配置,当然,想了解更具体的mybatis配置说明,建议去官网看看,这里不展开了:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- Globally enables or disables any caches configured in any mapper under this configuration -->
<setting name="cacheEnabled" value="true"/>
<!-- Sets the number of seconds the driver will wait for a response from the database -->
<setting name="defaultStatementTimeout" value="3000"/>
<!-- Enables automatic mapping from classic database column names A_COLUMN to camel case classic Java property names aColumn -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- Allows JDBC support for generated keys. A compatible driver is required.
This setting forces generated keys to be used if set to true,
as some drivers deny compatibility but still work -->
<setting name="useGeneratedKeys" value="true"/>
</settings>
<!-- Continue going here -->
</configuration>
恩,然后,就可以进行数据库的操作了,我简单用mysql建了个名字为springboot的数据库,在库里面建了一个简单的demo表(具体怎么建表那些不用我说了吧?实在没有接触过数据库的同学,可以自行百度或者谷歌去咯),然后,dao代码如下:
@Mapperpublic interface DemoDao {
@Select({"select demo_param from demo "})
String queryDemo();
}
注意,mybatis 的dao是一个接口,关于mybatis更多的内容,请读者参开官方文档,这里不展开了。
然后,就在原来的ServiceDemo类中调用一下吧,代码看下图吧:
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import springboot.hello.helloSpringboot.dao.DemoDao;
@Component
public class ServiceDemo {
@Autowired
DemoDao demoDao;
public String testDemo(){
String rtnAfterDosomething = "我是返回结果";
//这里是业务代码
return rtnAfterDosomething;
}
public String queryDemo(){
return demoDao.queryDemo();
}
}
ok,简单写个测试类,出现小绿条,测试成功。
然后,所有项目原型的工作完成了,然后,我们就可以进行我们核心业务开发了,很快有没有?很爽有木有?所以说,spring boot 搭建项目的确飞快,可以让我们省去很多机械的前期操作,读者们赶紧去探索下吧,spring boot ,你值得捅有!
OK,今天总结到这里,这个项目的代码在gitHub上这个地址,需要的人自取:https://github.com/lcpandcode/helloSpringboot.git
最后说一遍,spring boot ,用得真他妈爽!赶紧来吧!
本文内容总结:Spring-Boot快速搭建web项目详细总结
原文链接:https://www.cnblogs.com/lcplcpjava/p/7406253.html
以上是 Spring-Boot快速搭建web项目详细总结 的全部内容, 来源链接: utcz.com/z/296311.html