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层连接数据库,然后逐层返回。这是最基本的使用。

posted @ 2020-12-11 21:39  TandK  阅读(211)  评论(0编辑  收藏  举报