SpringBoot入门 简单搭建和使用
前言
差不多两年前,那个时候我准备要做毕业设计了,才第一次知道java有框架这种东西,在网上找了好多SSM的教程,那会儿真的是Spring+SpringMVC+MyBatis搭建的,印象极深的是还要写一堆配置文件,也不知道为什么写,报错了也不知道哪里错,根本不像现在有SpringBoot这么简单。
后来还好在博客园上看到了一位前辈的SSM框架搭建过程,虽然也是一堆问题,但前辈还是很有耐心地解答,甚至加qq帮我看项目错在哪里,很是热心。
而今两年过去,我自己也成了能写教程的人了,希望这个教程能帮到你吧。
这个教程的目的是教会你初步使用SpringBoot。
如果你是想系统的学习SpringBoot,那么这篇文章可能帮不了你太多。
如果你是现在马上要用到,那么可以看下这篇文章,会讲最基本的搭建和使用方法,每一步都会讲为什么,力求用最少的步骤让你懂搭建和使用SpringBoot。
项目的搭建
项目是使用Maven和eclipse搭建的。
网上相关的教程多是使用idea的,但使用eclipse的其实也不少,自己更偏爱eclipse,所以这里会使用eclipse,搭建思路和idea是一样的,差不了多少。
Maven
对Maven有了解的朋友可以跳过这部分了。
Maven的作用
Maven的作用是,让用户在项目中的pom.xml写下某个jar包的名字(又叫依赖),项目就可以自己联网去找对应的jar包,省去了开发者一个一个去找jar下载的功夫,因此使用一定要联网。包括SpringBoot,说到底也是一堆jar包的集合,因此我们可以新建一个Maven项目来继承SpringBoot项目,这样我们的项目就是SpingBoot框架了,接下来的做法便是这样。
Maven的安装
一般而言,新的eclipse都已经集成了maven,如果没有,网上有很多Maven安装的教程。
新建Maven项目
在Package Explorer下右键,选New→other;
在弹窗中找到Maven文件夹,点开,选择里面的Maven Project,点击next
创建一个简单的Maven项目
SpringBoot在这里是作为父项目被我们的项目继承;
创建好的项目目录如下:
添加Maven依赖
打开pom.xml,添加如下依赖(这个依赖是SpringBoot的启动器,tomcat内置在里面),这里写下并且保存之后,eclipse便会自己联网去找spring-boot-starter-web这个jar包下载,并放在下图的Maven Dependenices文件夹中,之后如果要添加什么jar包,可以百度这个jar包的依赖,在dependencies这个标签内写下即可。
<dependencies>
<!--快速整合springmvc和tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
添加前
添加后
使用示例
项目到这里搭好了第一步,可以进行最低限度的访问,接下来写点代码来访问
编写控制类
贴一下代码
package com.TandK.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class IndexController {
@RequestMapping("/hello")
@ResponseBody
public String sayHello(){
return "hello, SpringBoot!";
}
}
编写SpringBoot的启动类
package com.TandK;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
运行项目
直接运行该启动类
控制台正常打印无报错,打开浏览器访问,显示刚刚控制类方法里写的数据。注意SpringBoot默认端口是8080(不过这个也可以改的,在SpringBoot配置文件里改,这个后续会说)。
注意点
启动类即App可以和Controller类放在同一级,也可以放在Contoller类上一层,但不能放在和Controller包平级的包下,否则项目会正常启动,但页面却访问不到。
页面访问不到就会这样
SpringBoot的用法
上面只是做了简单的访问测试,要作为一个完整的web项目,我们需要
1.解析用户发出的请求
2.拿到数据库中的数据
3.进行数据的运算
4.将数据呈现在用户面前。
那么按照这个思路行动,除了SpringBoot的启动类(上文中的App)我们会在src/main/java下建下面几个包
- dao:又叫mapper,我们会用mybatis在此层进行与数据库的交互
- service:处理数据的逻辑和校验,负责dao和controller这两层的连接和他们之间的数据处理,一般来说我们有什么数据的运算会写在这里,有的会建一个service.impl包,service包下写接口,service.impl下对应的类来是实现接口。
- controller:又叫web,视图处理和接口暴露的地方,可以看到上文中是在controller中根据用户访问的连接,然后跳转到对应的页面将对应的数据显示给客户看
- pojo:也叫do,java中的对象写在这个包里,主要是和数据库的表对应,通常来说是要和数据库表中的字段完全一致的。
在src/main/resources下会建立一个application.properties,是SpringBoot的全局配置文件,因此文件名不要写错,后续有什么配置都会在里面写。
如果看不懂,往下跟着做一遍就懂了。但建议下面的做了一遍之后,再回来看看这部分。
整合MyBatis-Plus
介绍
使用MyBatis-Plus可以无须定义sql语句就能够完成数据库的增删改查操作。但是它不是万能,有些时候还是需要去定义的sql语句。
MyBatis-Plus官网
添加MyBatis-Plus的相关依赖
<!--整合mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<!--alibaba的数据连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>
注意,这里的驱动(即mysql-connector-java)要看对应的mysql版本,我的mysql是8以上的,所以mysql驱动要用8.0.11的。
如果你的mysql是5.X的,建议去找5.X的mysql驱动。我之前用的mysql驱动是5.X的,就会报错,因此这块要注意。
添加数据源
在application.properties中配置数据源DataSource,这里的配置根据自己的实际情况写
# springboot数据源初始化
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/你的数据库名?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=你的数据库用户名
spring.datasource.password=你的数据库密码
访问数据库中的数据
比如我在ssm的数据库中有一个user表,数据如下
pojo包
要在pojo包中写一个User类,字段与数据库完全一致,生成各自的setter/getter方法
dao层
在dao包下新建一个UserDao的接口,专门用来数据库中的User表进行增删改查,要继承BaseMapper。
package com.TandK.dao;
import com.TandK.pojo.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserDao extends BaseMapper<User>{
}
这里记得要回到App(SpringBoot启动类)中添加一个注解,告诉SpringBoot,Dao层的包名。
service层
在service包下定义一个IUserService的接口,然后在里面定义一个根据用户id查询用户信息的方法。
package com.TandK.service;
import com.TandK.pojo.User;
public interface IUserService {
/**
* 根据id查询用户信息
* @param id
* @return
*/
public User getUser(Integer id);
}
在service.impl包下定义对应的实现类UserServiceImpl。
package com.TandK.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.TandK.dao.UserDao;
import com.TandK.pojo.User;
import com.TandK.service.IUserService;
@Service
public class UserServiceImpl implements IUserService{
@Autowired
private UserDao userDao;
@Override
public User getUser(Integer id) {
// TODO Auto-generated method stub
return userDao.selectById(id);
}
}
- @Service是告诉SpringBoot这是一个service层的实现类;
- 写上@Autowired注解后SpringBoot会自动根据类型去注入对象,这就是Spring中IOC(控制反转的体现),即你不用自己去写
private UserDao userDao = new UserDao();
了 - 可以看到service层中维护着一个对应的Dao层对象,当需要什么数据直接用Dao层对象去数据库拿即可。
controller层
在Controller包下新建UserController类
package com.TandK.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.TandK.pojo.User;
import com.TandK.service.IUserService;
@Controller
public class UserController {
@Autowired
private IUserService userServiceImpl;
@RequestMapping("/getUser")
@ResponseBody
public User getUser(Integer id){
return userServiceImpl.getUser(id);
}
}
- 同样可以看到controller层中维护着一个对应的service层对象,当需要什么数据直接用service层对象去拿即可。
启动项目后访问
总结
教程到此结束,之后的使用基本照猫画虎,都差不多的,需要jar包去pom.xml下写对应的依赖,需要改什么配置就去application.properties里改,先百度一下写法,复制粘贴即可。
搭建过程只需做一次,之后的使用,除了添加jar包和改配置,多数情况下都是controller层调用service层,service层调用dao层,dao层连接数据库,然后逐层返回。这是最基本的使用。
SpringBoot入门 简单搭建和使用的更多相关文章
- springboot入门简单,深入难
18年1月份的时候在腾讯课堂学习springboot.springcloud搭建微服务,老师告诉我们,springboot入门容易,深入难. 因为你必须东西SpringMVC.Spring.Mybat ...
- SSH入门简单搭建例子
因为公司涉及项目使用SSH,为了解SSH搭建方式和运作原理,就自己搭建了一个. 采用尽量以最少的JAR包,搭建一个简单的struts2+spring+hibernate环境,希望像我这样的入门者都能理 ...
- springboot入门之一:环境搭建(续)
在上篇博客中从springboot的入门到运行一个springboot项目进行了简单讲述,详情请查看“springboot入门之一”.下面继续对springboot做讲述. 开发springboot测 ...
- SpringBoot + Dubbo + zookeeper 搭建简单分布式服务
SpringBoot + Dubbo + zookeeper 搭建简单分布式服务 详细操作及源码见: https://github.com/BillyYangOne/dubbo-springboot
- 简单springboot及springboot cloud环境搭建
springboot使用特定的方式,简化了spring的各种xml配置文件,并通过maven或者gradle,完成所需依赖,使用springboot maven插件,可直接输出可运行的jar包,省去了 ...
- Spring Cloud 入门教程 - 搭建配置中心服务
简介 Spring Cloud 提供了一个部署微服务的平台,包括了微服务中常见的组件:配置中心服务, API网关,断路器,服务注册与发现,分布式追溯,OAuth2,消费者驱动合约等.我们不必先知道每个 ...
- 补习系列(1)-springboot项目基础搭建课
目录 前言 一.基础结构 二.添加代码 三.应用配置 四.日志配置 五.打包部署 小结 前言 springboot 最近火的不行,目前几乎已经是 spring 家族最耀眼的项目了.抛开微服务.技术社区 ...
- SpringBoot入门基础
目录 SpringBoot入门 (一) HelloWorld. 2 一 什么是springboot 1 二 入门实例... 1 SpringBoot入门 (二) 属性文件读取... 16 一 自定义属 ...
- Spring全家桶系列–[SpringBoot入门到跑路]
//本文作者:cuifuan Spring全家桶————[SpringBoot入门到跑路] 对于之前的Spring框架的使用,各种配置文件XML.properties一旦出错之后错误难寻,这也是为什么 ...
随机推荐
- AcWing 232. 守卫者的挑战
题目链接 大型补档计划. 比较显然的dp 设 \(f[i][j][k]\) 为前 \(i\) 次,擂台上了 \(j\) 次,空闲容量(背包 - 使用的)为 \(k\) 的概率. 不上擂台的转移:\(f ...
- 安卓11配置谷歌FCM推送报错
2020-12-11 11:57:50.872 15404-15464/com.sp.notify E/FirebaseInstanceId: Failed to get FIS auth token ...
- maven私有仓库搭建(nexus)
搭建是参考博客:https://blog.csdn.net/zn353010922/article/details/79441122 切换到nexus目录的bin下 启动.状态.停止:./nexus ...
- 快速构建一个vue项目
首先介绍一下命令行构建一个vue项目步骤: 1.下载安装node.js(直接运行安装包根据步骤安装完),打开命令行输入:node -v ,出现版本号即安装成功. 2.命令行界面输入:cnpm inst ...
- I/O-外部设备
目录 输入设备 输出设备 显示器 阴极射线管(CRT)显示器 字符显示器 图形显示器 图像显示器 打印机 小结 外存储器 磁盘存储器 磁盘设备的组成 存储区域 硬盘存储器 磁盘的性能指标 磁盘地址 硬 ...
- win10平衡模式、高性能模式和卓越模式三种电池模式的区别
win10在1803版本后,有了很多隐藏的功能.电池模式中的"卓越模式"就是其中之一. 互相比较一下: 节能模式:顾名思义是最省电的,此模式下会禁用一些系统特效,且CPU运行频率是 ...
- Maven项目中配置jdk版本
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> ...
- [日常摸鱼]Luogu2521[HAOI2011]防线修建-set维护凸包
https://www.luogu.org/problemnew/show/2521 题意:维护一个上凸包:删点,查询周长 很容易想到把问题转换为离线:先读入全部操作,记录下最后剩下的点,倒着加点来维 ...
- 【进程/作业】篇章一:Linux进程及其管理(进程的管理基础)
概述:监控系统各方面的性能,保障各类服务的有序运行,是运维工作的重要组成部分,本篇就介绍一次常用的系统监控命令和相关的参数说明 具体包含以下几部分: 1.进程的管理基础 ,主要是讲一下概念性的东西 2 ...
- 【探索之路】机器人篇(3)-给mwRobot建立模型
在创建一个mwRobot_description程序包那一节中,我们添加了依赖roscpp rospy std_msgs 和 urdf , 现在我们再添加一个xacro依赖. 如何添加依赖? 打开程 ...