初步学习完SpringBoot,你需要掌握哪些知识?

磨磨蹭蹭初步学完了springboot,乘热复习一下,总结一下几个重要的知识点。。
我是看雷丰阳老师的视频学的,所以是跟着他的笔记以及我个人需求所总结的,只能算学会springboot最低要求。至于还有例如单元测试,指标监控等知识点,可以根据需求自行学习。。
一,学会利用springInitializr创建一个springboot项目.
二,掌握各种注释的用法
三,掌握yml文件的书写规则
四,学会静态资源配置和请求参数处理
五,掌握一种模板引擎(如:freemarker,thymeleaf…)
六,学会配置拦截器
七,掌握文件上传功能
八,掌握导入Jdbc及数据库驱动
九,学会Druid
十,掌握整合Mybatis/MybatisPlus
十一,在第十项基础上掌握对数据库操作相关方法以及分页等功能
这些知识点掌握后可以先做一些小的项目,然后再尝试学着看springboot相关的源码
———————————————————————————————————————
每条知识点中比较重要的内容:

使用springInitializr创建项目还是很简单的,基本使用过一次就能学会。需要注意的是在创建的时候,server url可以换成 start.aliyun.com防止依赖无法下载或者下载速度过慢。
在创建时还可以添加一些会用到的依赖(例如:freemarker,mysql…),这样在项目创建完成后会自动导入,不用手动导入了。

一些常用的注释:

@Component  //把普通pojo实例化到spring容器中,可以在配置文件中对该实例赋值
@Bean       //给容器添加一个组件,方法名是id,返回类型是组件类型,返回的值就是保存的对象
@Autowired  //它可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作
@Configuration  //表明这是一个配置类
@Conditional    //在满足某种情况下运行
@ResponseBody   //作用其实是将java对象转为json格式的数据
@RestController //相当于@Controller+@ResponseBody
@RequestMapping //通过它来指定控制器可以处理哪些URL请求
@GetMapping,@PostMapping,@DeleteMapping,@PutMapping
@RequestParam   //将请求参数绑定到你控制器的方法参数上
@PathVariable   //获取请求路径上的值
@RequestBody    //将前端返回的数据转换成bean类型
@MapperScan     //扫描指定路径下的mapper

yml文件的书写规则,没啥好说的。注意格式k: v就行

静态映射原理:请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面。
静态资源一般放在/static目录下。Springboot将从如下位置按如下优先级(从高到低)加载jar包对应前端静态资源:
1.jar包同级static目录
2.jar包同级public目录
3.jar包同级resource目录
4.jar包/META-INF/resources

spring:
  mvc:
    static-path-pattern:   #设置访问静态资源的前缀

  resources:
    static-locations:      #自定义静态资源路径

在静态资源路径下添加favicon.ico文件,可以设置网站小图标

我选择使用的是freemarker,只要在pom.xml里导入依赖即可使用(可在创建项目开始时选择自动添加)。

<dependency>
   <groupId>org.springframework.bootgroupId>
   <artifactId>spring-boot-starter-freemarkerartifactId>
dependency>

可在application.yml中添加设置

spring:
  freemarker:
    cache: false  #缓存设置
    charset: UTF-8   #编码格式
    suffix: .ftl     #后缀名

具体使用规范参考 https://www.cnblogs.com/linjiqin/p/3388298.html

1、编写一个拦截器实现HandlerInterceptor接口
2、拦截器注册到容器中(实现WebMvcConfigurer的addInterceptors)
3、指定拦截规则【如果是拦截所有,静态资源也会被拦截】
拦截器原理:初步学习完SpringBoot,你需要掌握哪些知识?_第1张图片

文件上传功能
controller层实现:

 @PostMapping("/upload")
 //MultipartFile 单文件上传  MultipartFile[]  多文件上传
    public String upload(@RequestPart("singlefile") MultipartFile singlefile,
                         @RequestPart("multyfile") MultipartFile[] multyfile) throws IOException {
        if (!singlefile.isEmpty()){
            String originalFilename = singlefile.getOriginalFilename();
            singlefile.transferTo(new File("D:\\"+originalFilename));
        }

        if (multyfile.length > 0){
            for (MultipartFile multipartFile : multyfile) {
                if (!multipartFile.isEmpty()){
                    String originalFilename = multipartFile.getOriginalFilename();
                    multipartFile.transferTo(new File("D:\\"+originalFilename));
                }
            }
        }
        return "main";
    }

需要注意的是,需要在application.yml里设置上传文件大小设置。

spring:
  servlet:
     multipart:
        max-file-size: 10MB    #单个文件上传最大体积
        max-request-size: 1000MB    #多个文件上传最大体积

创建项目时可以选择,会自动添加.可以在配置文件中配置相关属性:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC
    username: root
    password: 123456

druid官方文档: https://github.com/alibaba/druid
主要是一些配置需要知道怎么用

    druid:
      #监控页相关配置(例如:需要登陆,设置用户名密码,是否可重置)
      stat-view-servlet:
        enabled: true
        login-username: admin
        login-password: 123456
        reset-enable: false
      # 监控web
      web-stat-filter:
        enabled: true

      #监控SpringBean
      aop-patterns: com.example.event01.*
      #底层开启功能,stat(sql监控),wall(防火墙)
      filters: stat,wall

      #设置防火请和sql监控具体属性
      filter:
        stat:
          enabled: true
        wall:
          enabled: true

Mybatis
mybatis的整合同样可以在创建项目开始时便选择导入.还是需要掌握一些常用配置

mybatis:
  #mybatis的配置文件位置,但不可与yml中的配置configration同时使用
  #config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
  configuration:
    #驼峰命名
    map-underscore-to-camel-case: true

值得注意的是,mybatis有两种写配置的方式.
第一种,创建mybatis-config.xml,在这里面写配置,然后在application.yml里指定配置文件的路径.
第二种,直接在application.yml里配置.
这两种只可选用一种,不可一起使用.
Mybatis有三种写sql的方式(其实我觉得只能算两种).
第一种,配置模式.先编写Mapper接口,标注@Mapper注解,再编写sql映射文件并绑定mapper接口.要注意Mapper接口名要与sql映射文件名相同.
第二种,注解模式.编写Mapper接口,标注@Mapper注解,然后在接口内的方法上添加例如@Select,@Insert等注解直接编写sql.
第三种,混合模式.以上两种一起用.复杂的sql用第一种,简单的sql用第二种.
MybatisPlus
Mybatis Plus在开始选择后会包含Mybatis以及Jdbc的相关依赖.
Mybatis Plus主要提供了一些常用的方法供我们使用.只需要我们的Mapper继承 BaseMapper 就可以拥有crud能力.

//尖括号里写需要操作的类名
@Mapper
public interface CityMapper extends BaseMapper<City> {
}

在service接口可以继承Iservice:

//尖括号里写需要操作的类名
public interface CityService extends IService<City> {
}

在service实现类中可以继承ServiceImpl

//尖括号里填写相应的Mapper类名和需要操作的类名
@Service
public class CityServiceImpl extends ServiceImpl<CityMapper,City> implements CityService {
}

完成以上操作,便可以直接使用其提供的一些方法.在Idea插件商店还可以下载MybatisX插件,可以很方便地在Mapper类与其绑定的映射文件间跳转.

十一

数据库操作没啥好说的,主要第一次用freemarker做分页功能,记录一下.
Controller层:

@Controller
public class TableController {
    @Autowired
    DbPersonService dbPersonService;
    
    @GetMapping("/second_table")
    public String secondTable(Model model, @RequestParam(value = "pn",defaultValue = "1") Integer pn) {
        //表格遍历
        List<Person> list = dbPersonService.list();

        //分页
        //构造分页参数
        Page<Person> personPage = new Page<>(pn, 3);//拿出第pn页的数据,每页展示3条数据
        //调用page进行分页
        Page<Person> page = dbPersonService.page(personPage, null);//把上面拿到的数据做条件筛选,这里不做筛选
        model.addAttribute("ppage",page);

        return "table/second_table";
    }

}

controller层没啥说的,这里的page方法是MybatisPlus提供的.
ftl页面代码:

<table id="users">
    <thead>
    <tr>用户名tr>
    <tr>密码tr>
    thead>
    <tbody>
    <#list ppage.records as p>
    <tr>tr>
        <td>${p.name}td>
        <td>${p.uid}td>
    tr>
    #list>
    <tr>
        <td>当前第${ppage.current}页td>
        <td>总共${ppage.pages}页td>
        <td>共有${ppage.total}条记录td>
    tr>
    tbody>
table>
    <#import "../page.ftl" as fpage/>
    <@fpage.page totalPage=ppage.pages currentPage=ppage.current />

page.ftl页面代码:

<#macro page currentPage totalPage >
<ul>
    
  • style="display: none" #if>> <a href="/second_table?pn=1">首页a> li>
  • style="display: none" #if>><a href="/second_table?pn=${currentPage-1}">上一页a>li> <#assign start = 1/> <#assign pages=start..totalPage/> <#list pages as p>
  • style="color: darkorange" #if>> <a href="/second_table?pn=${p}">${p}a>li> #list>
  • style="display: none" #if> ><a href="/second_table?pn=${currentPage+1}" >下一页a>li>
  • style="display: none" #if> ><a href="/second_table?pn=${totalPage}" >尾页a>li> ul> #macro>
  • 代码只负责功能实现,css样式都没写。。还有就是freemarker学得不精,代码写的比较丑。。

    总结

    自我总结,学得还不是很好。若有不好的地方,欢迎批评指正。

    你可能感兴趣的:(spring,java,spring,boot)