SpringBoot2笔记-雷神

  • 注意:要使用thymeleaf视图渲染,必须在标签上添加:xmlns:th="http://www.thymeleaf.org"

1.自动配置原理

  • SpringBoot先加载所有的自动配置类 xxxxxAutoConfiguration
  • 每一个自动配置类都根据@Conditional注解按照条件进行生效,生效的配置类会为容器配置很多组件
  • 配置类上需要@EnableConfigurationProperties(xxxProperties.class) 和配置文件进行绑定
  • xxxProperties.class需要通过@ConfigurationProperties(prefix = “xxx”) 确定从配置文件(application.properties)中取值的规则,若不在配置文件中更改取值,默认取xxxProperties.class的默认属性值
    xxxxxAutoConfiguration.java
    xxxProperties.java
    在这里插入图片描述
    在这里插入图片描述

2. 拦截器执行流程

发送请求以后,进入dodispatch,通过handler确定哪个控制器的哪个方法能处理请求

3.原理分析

在这里插入图片描述

4.springboot整合mybatis

由于springboot已经自动配置了SqlSessionFactory和SqlSession,所以只需要通过@Mapper将写好的mapper接口导入进来

4.1 配置mapper的实现配置文件位置

  • 在application.properties或者application.yml中配置,以application.yml为例:
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/ssmbuild
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
    
mybatis:
  mapper-locations: classpath:mybatis/mapper/BookMapper.xml
  configuration:
    map-underscore-to-camel-case: true  #开启驼峰命映射
  type-aliases-package: com.yang.admin.pojo  #配置别名

4.2 编写实体类pojo

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Books {
    private int bookID;
    private String bookName;
    private int bookCounts;
    private String detail;
}

4.3 编写mapper接口和实现类配置文件(dao层)

注意:mapper接口必须加上@mapper

@Mapper
public interface BookMapper {

    public Books queryById(int bookID);
}

  • BookMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yang.admin.mapper.BookMapper">
    <!--    public Books queryById(int id);-->
    <select id="queryById" resultType="books" parameterType="int">
        select * from ssmbuild.books where bookID=#{bookID}
    </select>
</mapper>

4.4 编写service层

@Service
public class BooksService {

    @Autowired
    BookMapper bookMapper;
    public Books queryById(int bookID){
        return bookMapper.queryById(bookID);
    }
}

4.5 编写controller层

@Controller
public class BookController {

    @Autowired
    BooksService booksService;

    @ResponseBody
    @GetMapping("/book/{bookID}")
    public Books queryBook(@PathVariable int bookID){
        return booksService.queryById(bookID);
    }
}

4.6 整个项目结构

在这里插入图片描述

4.7 最佳实战:

● 引入mybatis-starter
配置application.yaml中,指定mapper-location位置即可
● 编写Mapper接口并标注@Mapper注解
● 简单方法直接注解方式
● 复杂方法编写mapper.xml进行绑定映射
● @MapperScan(“com.atguigu.admin.mapper”) 简化,其他的接口就可以不用标注@Mapper注解

5.自动配置

spring-boot-starter-*:官方提供的场景
*-spring-boot-starter:第三方提高的场景

  • 所有场景启动器最底层的依赖
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
  <version>2.3.4.RELEASE</version>
  <scope>compile</scope>
</dependency>
  • 我们需要什么场景,就导入该场景的starter,starter下没有代码,只是导入了所需要的所有依赖,
    引入了哪些场景这个场景的自动配置才会开启, SpringBoot所有的自动配置功能都在
    spring-boot-autoconfigure 包里面
  • 自动配置

springboot通过@EnableAutoConfiguration注解内的@importspring-boot-autoconfigureMETA-INF/spring.factories加载所有的AutoConfiguration自动配置类,通过@Conditional按条件注入bean,若有第三方starter,@import也会从其jar包的META-INF/spring.factories中加载AutoConfiguration自动配置类

在这里插入图片描述

  • 在自定义starter中导入对应的自动配置包,在自动配置包内配置对应的xxxAutoConfiguration,以及其对应的CconfigurationProperties,这样容器中就导入了这个自动配置类
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值