前言

差不多两年前,那个时候我准备要做毕业设计了,才第一次知道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入门 简单搭建和使用的更多相关文章

  1. springboot入门简单,深入难

    18年1月份的时候在腾讯课堂学习springboot.springcloud搭建微服务,老师告诉我们,springboot入门容易,深入难. 因为你必须东西SpringMVC.Spring.Mybat ...

  2. SSH入门简单搭建例子

    因为公司涉及项目使用SSH,为了解SSH搭建方式和运作原理,就自己搭建了一个. 采用尽量以最少的JAR包,搭建一个简单的struts2+spring+hibernate环境,希望像我这样的入门者都能理 ...

  3. springboot入门之一:环境搭建(续)

    在上篇博客中从springboot的入门到运行一个springboot项目进行了简单讲述,详情请查看“springboot入门之一”.下面继续对springboot做讲述. 开发springboot测 ...

  4. SpringBoot + Dubbo + zookeeper 搭建简单分布式服务

    SpringBoot + Dubbo + zookeeper 搭建简单分布式服务 详细操作及源码见: https://github.com/BillyYangOne/dubbo-springboot

  5. 简单springboot及springboot cloud环境搭建

    springboot使用特定的方式,简化了spring的各种xml配置文件,并通过maven或者gradle,完成所需依赖,使用springboot maven插件,可直接输出可运行的jar包,省去了 ...

  6. Spring Cloud 入门教程 - 搭建配置中心服务

    简介 Spring Cloud 提供了一个部署微服务的平台,包括了微服务中常见的组件:配置中心服务, API网关,断路器,服务注册与发现,分布式追溯,OAuth2,消费者驱动合约等.我们不必先知道每个 ...

  7. 补习系列(1)-springboot项目基础搭建课

    目录 前言 一.基础结构 二.添加代码 三.应用配置 四.日志配置 五.打包部署 小结 前言 springboot 最近火的不行,目前几乎已经是 spring 家族最耀眼的项目了.抛开微服务.技术社区 ...

  8. SpringBoot入门基础

    目录 SpringBoot入门 (一) HelloWorld. 2 一 什么是springboot 1 二 入门实例... 1 SpringBoot入门 (二) 属性文件读取... 16 一 自定义属 ...

  9. Spring全家桶系列–[SpringBoot入门到跑路]

    //本文作者:cuifuan Spring全家桶————[SpringBoot入门到跑路] 对于之前的Spring框架的使用,各种配置文件XML.properties一旦出错之后错误难寻,这也是为什么 ...

随机推荐

  1. Map、Debug追踪

    Map集合   概述   现实生活中,我们常会看到这样一种集合:IP地址和主机名,身份证号和个人,系统用户名与系统用户对象等,这种一一对应的关系,我们把它称之为映射.Java当中提供了专门的集合类用来 ...

  2. JavaSE04-Switch&循环语句

    1.Switch 格式: 1 switch (表达式) { 2 case 1: 3 语句体1; 4 break; 5 case 2: 6 语句体2; 7 break; 8 ... 9 default: ...

  3. Java带Body内容的Http请求

    使用Java进行Http请求: package test2; import com.mashape.unirest.http.HttpResponse; import com.mashape.unir ...

  4. git远程仓库Github

    一.克隆项目 git clone 网址 1.配置信息 git config user.name '用户名' git config user.email '邮箱号' 2.推送项目到远程仓库 # 工作区代 ...

  5. wpa_supplicant 检测错误密码

    选好了 wifi ssid,填了密码,生成新配置文件,重启了wpa_supplicant,怎么知道输入的密码对不对,如果不对有什么体现? wpa_supplicant 前台运行时,打印信息中会有: W ...

  6. Python高级语法-多继承MRO相关-多继承顺序(4.5.1)

    @ 目录 1.说明 2.代码 关于作者 1.说明 使用类的魔法方法__mro__ 可以查看他的父类调用顺序 还有调用父类的构造方法的时候,使用super调用,里面有C3算法支持,不会重复调用相同的祖先 ...

  7. js--数组的filter()过滤方法的使用

    前言 你还在通过for循环遍历数组吗?你还在遍历之后一项一项的通过if判断过滤你需要的数据吗?你还在写着一大堆代码实现一个简单的过滤数据功能吗?那么,今天他来了.他就是这里要介绍的es6中数组filt ...

  8. Application Data in Docker 笔记

    Application Data in Docker By default all files created inside a container are stored on a writable ...

  9. 神奇的BFC

    BFC是什么? 块格式化上下文(Block/box Formatting Context,BFC) 是Web页面的可视CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域 ...

  10. 为什么Python多线程无法利用多核

    1.全局解释锁 如题: Python的多线程为什么不能利用多核处理器? 全局解释器锁(Global Interpreter Lock)是计算机程序设计语言解释器用于同步线程的一种机制,它使得任何时刻仅 ...