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一旦出错之后错误难寻,这也是为什么 ...
随机推荐
- Map、Debug追踪
Map集合 概述 现实生活中,我们常会看到这样一种集合:IP地址和主机名,身份证号和个人,系统用户名与系统用户对象等,这种一一对应的关系,我们把它称之为映射.Java当中提供了专门的集合类用来 ...
- JavaSE04-Switch&循环语句
1.Switch 格式: 1 switch (表达式) { 2 case 1: 3 语句体1; 4 break; 5 case 2: 6 语句体2; 7 break; 8 ... 9 default: ...
- Java带Body内容的Http请求
使用Java进行Http请求: package test2; import com.mashape.unirest.http.HttpResponse; import com.mashape.unir ...
- git远程仓库Github
一.克隆项目 git clone 网址 1.配置信息 git config user.name '用户名' git config user.email '邮箱号' 2.推送项目到远程仓库 # 工作区代 ...
- wpa_supplicant 检测错误密码
选好了 wifi ssid,填了密码,生成新配置文件,重启了wpa_supplicant,怎么知道输入的密码对不对,如果不对有什么体现? wpa_supplicant 前台运行时,打印信息中会有: W ...
- Python高级语法-多继承MRO相关-多继承顺序(4.5.1)
@ 目录 1.说明 2.代码 关于作者 1.说明 使用类的魔法方法__mro__ 可以查看他的父类调用顺序 还有调用父类的构造方法的时候,使用super调用,里面有C3算法支持,不会重复调用相同的祖先 ...
- js--数组的filter()过滤方法的使用
前言 你还在通过for循环遍历数组吗?你还在遍历之后一项一项的通过if判断过滤你需要的数据吗?你还在写着一大堆代码实现一个简单的过滤数据功能吗?那么,今天他来了.他就是这里要介绍的es6中数组filt ...
- Application Data in Docker 笔记
Application Data in Docker By default all files created inside a container are stored on a writable ...
- 神奇的BFC
BFC是什么? 块格式化上下文(Block/box Formatting Context,BFC) 是Web页面的可视CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域 ...
- 为什么Python多线程无法利用多核
1.全局解释锁 如题: Python的多线程为什么不能利用多核处理器? 全局解释器锁(Global Interpreter Lock)是计算机程序设计语言解释器用于同步线程的一种机制,它使得任何时刻仅 ...