一、项目整合与部署存在的问题
1.1SSM手动整合存在的问题
步骤多、配置繁琐
- 创建maven项目
- 部署mybatis:添加依赖,创建配置文件
- 部署spring、SpringMVC:添加依赖,创建配置文件
- 添加整合依赖
- 整合配置
项目进行服务器部署步骤繁琐
1.2如何简化这些繁琐的配置和部署步骤?
- springboot就是一个可以简化整合过程中复杂配置的框架
- springboot在创建项目时会内置tomcat
二、springboot简介
2.1概念
- 随着动态语言的流行,java语言的开发就显得格外笨重:配置繁琐、开发效率低、项目部署麻烦、集成第三方技术难度大
- 在这种情况下,springboot就应运而生
- springboot采用了约定大于配置、习惯优于配置(将我们习惯的配置提前配置好,依据要求进行加载)的理念快速搭建的开发环境,我们无需或者很少的进行相关配置就能快速的将项目运行起来
2.2优点
- 能够快速的搭建项目
- 对主流的开发框架都提供了无配置集成(SpringBoot内置了配置)
- 项目可以独立的运行、无需单独的配置Servlet容器(内置Tomcat)
- 极大的提高了开发和部署效率
- 提供了运行时的监控系统(日志等)
- springboot为springcloud提供了基础(与云计算/原生有天然的集成)
2.3缺点
- 由于所有配置都是内置的,保措时定位比较困难
- 版本迭代速度比较快、有些版本改动比较大(增加学习成本)
三、第一个springboot应用
- 体验:基于springboot的整合SpringMVC
- springboot应用需要依赖远程的服务器进行创建(idea用spring initializr连接远程服务器创建项目)
远程服务器:
- spring官方:start.spring.io
- ali:start.aliyun.com
3.1创建项目
3.1.1File-new-project
3.1.2填写项目信息
3.1.3选择项目依赖
3.1.4网页版创建springboot项目
若创建基于idea创建失败则使用网页版创建
- 输入start.spring.io -在其中填写项目信息 -点击generate生成项目包并下载 -将下载的项目解压到目录下 -用idea打开该项目
3.2配置项目-MyBatis
3.2.1springboot项目结构
- springboot不需要webAPP,
- 有一个默认类(启动类)不需要删除修改(原来启动tomcat,现在启动主类)
- 在resource中有两个文件夹(static-静态资源目录,目录中的资源不会被拦截;templates-模板目录,用于存放项目中的动态模板JSp、Thymeleaf),一个文件application-springboot应用的配置文件,用于进行开发者的自定义配置或者对spring的配置进行修改
3.2.2自定义配置值
- springboot 帮助我们完成通用配置,但是像数据库连接地址、账号、密码还是需要手动配置的
- 修改mysql驱动的版本(选择性)
- 在springboot 主文件application中配置数据源、映射路径、实体类路径
- 修改mysql驱动的版本(选择性)
- 在application中配置数据源
- 配置映射文件和实体类文件
#配置数据源(key必须按照springboot要求写)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db_2010_mybatis?characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
#映射文件mapper路径
mybatis.mapper-locations=classpath:mappers/*Mapper.xml
#配置实体类的包名
mybatis.type-aliases-package=com.qfedu.springboot.demo.entity
- 在springboot启动类通过@MapperScan注解指定DAO的包名
@MapperScan("com.qfedu.springboot.demo.dao")
3.3启动项目
3.3.1启动
-springboot应用自带servlet容器Tomcat,因此无需进行额外的服务器配置,运行启动类即可启动一个搭配ring项目
- 注意问题:jdk版本要一致(pom.xml)
- 当jdk低于17时,springboot版本要选择低于3.0的
3.3.2测试
@Data
@NoArgsConstructor无参构造系
@AllArgsConstructor所有参构造
@ToString
- 在idea中添加xml文件的方法
步骤(添加用户信息)
- 先创建用户表的数据库(users)
- 做持久层,创建实体类(User)
- 完成Dao操作(UserDAo接口)Dao中与操作相关(增删查改)
- 在mappers中新建UserMapper.xml对接口(UserDAo进行操作),
useGeneratedKeys="true" keyProperty="userId"主键回填 -新建service层(与业务相关)- 创建service接口(UserService)
- 创建userServiceImpl,实现userService接口进行用户注册业务
- 新建UserController,将项目表现在前端(业务请求)
用户表的数据库users
创建用户表实体类User
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {
private int userId;
private String userName;
private String userPwd;
private String userRealname;
private String userImg;
}
创建UserDAO,完成DAO层操作(增删改查)
package com.qfedu.springboot.demo.dao;
import com.qfedu.springboot.demo.entity.User;
public interface UserDAO {
public int insertUser(User user);
}
创建useerMapper.xml,注入UserDAo,执行用户插入操作
<insert id="insertUser" useGeneratedKeys="true" keyProperty="userId">
insert into users(user_name,user_pwd,user_realname,user_img)
values(#{userName},#{userPwd},#{userRealname},#{userImg})
</insert>
创建业务层userService
public interface UserService {
public User userRegister(User user);
}
创建userServiceImpl,实现userService接口进行用户注册业务
@Service
public class UserServiceImpl implements UserService {
// 调用userDao层,并注入
@Resource
private UserDAO userDAO;
@Override
/**
* 用户注册
* @param user
* @return 如果注册成功则返回user对象(带有id),注册失败返回null
*/
public User userRegister(User user) {
int i = userDAO.insertUser( user );
if(i>0){
return user;
}else{
return null;
}
}
}
新建UserController,将项目表现在前端(业务请求)
@Controller
@RequestMapping("/user")
public class UserController {
// 注入service层
@Resource
private UserService userService;
// 浏览器前端访问路径,返回对象userServiceImpl注入给controller
@RequestMapping("/register")
// 返回Jason对象
@ResponseBody
public User register(User user){
return userService.userRegister( user );
}
}