孤尽训练营Day16

191 阅读3分钟

一、SpringBoot简介

当前互联网后端开发中,JavaEE占据了主导地位。对JavaEE开发,首选框架是Spring框架。在传统的 Spring开发中,需要使用大量的与业务无关的XML配置才能使Spring框架运行起来,这点备受许多开发 者诟病。随着Spring4.x发布,Spring已经完全脱离XML,只使用注解就可以运行项目。为了进一步简化 Spring应用的开发,SpringBoot诞生了。它是由Pivotal团队提供的全新框架,其设计目的是简化Spring 应用的搭建及开发过程,并迎合时下流行的分布式微服务设计思想,越来越多企业在使用SpringBoot。 本课程跟随时代的潮流,带大家张掌握这门技术。

1.0 Spring怎么做Web开发?

我们怎么开发一个web项目:

  1. web.xml配置:SpringMVC核心控制器(DispatcherServlet),Spring容器监听器,编码过滤器....
  2. Spring 配置:包扫描(service、dao),配置数据源,配置事务....
  3. SpringMVC配置:包扫描(controller),视图解析器,注解驱动,拦截器,静态资源....
  4. 日志配置
  5. ...
  6. 部署 Tomcat 调试,每次测试都需要部署

  7. 流程非常麻烦,为了简化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

  1. 创建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>
  1. 创建User表—>创建实体UserBean 创建实体
@Data
public class User {
    private Integer id;
    private String username;
    private String password;
    private String name;
}
  1. 编写用户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();
    }
}
  1. 编写Mapper
public interface UserMapper {
    @Select("select * from user")
    List<User> findAll();
}
  1. 在启动类中配置Mapper扫描

截图_20211618061610.png

@MapperScan("com.kkb.mapper")
@SpringBootApplication
public class SpringbootMybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatisApplication.class, args);
    }

}
  1. 在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