一、SpringBoot简介
当前互联网后端开发中,JavaEE占据了主导地位。对JavaEE开发,首选框架是Spring框架。在传统的 Spring开发中,需要使用大量的与业务无关的XML配置才能使Spring框架运行起来,这点备受许多开发 者诟病。随着Spring4.x发布,Spring已经完全脱离XML,只使用注解就可以运行项目。为了进一步简化 Spring应用的开发,SpringBoot诞生了。它是由Pivotal团队提供的全新框架,其设计目的是简化Spring 应用的搭建及开发过程,并迎合时下流行的分布式微服务设计思想,越来越多企业在使用SpringBoot。 本课程跟随时代的潮流,带大家张掌握这门技术。
1.0 Spring怎么做Web开发?
我们怎么开发一个web项目:
- web.xml配置:SpringMVC核心控制器(DispatcherServlet),Spring容器监听器,编码过滤器....
- Spring 配置:包扫描(service、dao),配置数据源,配置事务....
- SpringMVC配置:包扫描(controller),视图解析器,注解驱动,拦截器,静态资源....
- 日志配置
- ...
- 部署 Tomcat 调试,每次测试都需要部署
- …
流程非常麻烦,为了简化spring应用开发流程,Springboot应运而生!
比原来Spring要方便很多
核心还是Spring技术栈
1.1 设计初衷
为Spring开发者提供一种,更快速、体验更好的Spring应用开发方式
开箱即用,同时也可快速扩展
嵌入式的Tomcat
绝对没有冗余代码,无需XML配置
1.2 核心功能
核心能力:Spring容器、日志、自动配置AutoCongfiguration、Starter web应用的能力:MVC、嵌入式Web服务器 数据访问(持久化):关系型数据库、非关系型数据库
1.3 Starter的原理
Starter是依赖关系的整理和封装。是一套依赖坐标的整合,可以让导入应用开发的依赖坐标更方便。
利用依赖传递的特性:帮你把众多的依赖打包了。
有了这些Starter,你获得Spring和其整合的所有技术的一站式服务。无需配置(自动配置)、无需复制粘 贴多余的依赖坐标,一个坐标即可完成所有入门级别操作。举例:Web开发,只需要导入 spring-boot-starter-web。
每个Starter包含了当前功能下的许多必备依赖坐标,这些依赖坐标是项目开发,上线和运行必须的。同 时这些依赖也支持依赖传递。举例: spring-boot-starter-web 包含了所有web开发必须的依赖坐标。
1.4 原理分析小结:
Starter:是一套依赖关系的整理和封装
让我们更加专注于业务开发,无需关心依赖导入,依赖冲突,及依赖的版本
在pom文件导入starter既可使用对应的功能
依赖管理:依赖管理是对依赖坐标的抽取和复用,统一管理依赖坐标的版本。
实现了依赖坐标的版本管理
starter随用随取
避免了继承所有父类starter的依赖的臃肿
避免了记忆所有starter的麻烦。
1.5 SpringBoot整合MyBatis
- 创建SpringBoot工程,springboot_mybatis;
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.11.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.kkb</groupId>
<artifactId>springboot_mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_mybatis</name>
<packaging>war</packaging>
<description>springboot整合mybatis</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- 创建User表—>创建实体UserBean 创建实体
@Data
public class User {
private Integer id;
private String username;
private String password;
private String name;
}
- 编写用户Controller,编写UserService
UserController
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/findAll")
public List<User> findAll(){
return userService.findAll();
}
}
UserService
public interface UserService {
List<User> findAll();
}
UserServiceImpl
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.findAll();
}
}
- 编写Mapper
public interface UserMapper {
@Select("select * from user")
List<User> findAll();
}
- 在启动类中配置Mapper扫描
@MapperScan("com.kkb.mapper")
@SpringBootApplication
public class SpringbootMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisApplication.class, args);
}
}
- 在application.properties中添加数据库连接信息
#\u7AEF\u53E3\u53F7\u914D\u7F6E
server.port=8085
#\u9879\u76EE\u8DEF\u5F84
server.servlet.context-path=/springboot
#debug \u65E5\u5FD7
#debug=true
# \u6253\u5370SQL\u8BED\u53E5
logging.level.com.kkb.mapper=debug
# DB \u914D\u7F6E
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver