zoukankan      html  css  js  c++  java
  • springboot实战--笔记

    由于这本书看过一遍,所以这里是二次复习,记录的东西比较少,就不分章节了。

    共12章,524页,预计时间是18h

    第一章 spring基础:

    第二章 spring常用配置:

    bean的Scope:singleton ,prototype,request,session

    Spring的EL表达式和资源调用:

    注入 @Value("${book.name}"),要记得配置PropertySourcesPlaceholderConfigurer

     

    第三章 spring 高级话题 3h

    spring aware : spring 提供了大量的aware接口,实现这些接口可以调用spring的服务

    多线程:任务执行器 TaskExecutor,使用TreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor。

    配置自定义的线程池需要实现AsyncConfigurer接口。

    实际上,即使不配置TreadPoolTaskExecutor,spring也会使用默认的线程池SimpleAsyncTaskExecutor

    而实际开放中,任务一般是非阻碍的,即异步的,

    所以我们要在配置类中通过@EnableAsync开启对异步任务的支持,并通过在实际执行的Bean的方法中使用@Async注解来声明其是一个异步任务

    计划任务:在配置类添加@EnableScheduling来开启对计划任务的支持,然后在要执行计划任务的方法上注解@Scheduled

    条件注解:@Conditional

    在覆写matches方法时,获取判断条件如下:

    获取bean():conditionContext.getBeanFactory().getBean(UserDao.class)

    获取配置文件中的属性:conditionContext.getEnvironment().getProperty("app.dbType")

    获取注解的属性值:metadata.getAnnotationAttributes(DatabaseType.class.getName()).get("value")

    获取环境变量,包括JVM启动参数:System.getProperty("dbType")

    组合注解和元注解:元注解就是可以注解到别的注解上的注解,被注解的注解称之为组合注解,组合注解具备元注解的功能。

    @Enable*注解的工作原理:通过@Import注解来添加配置,包括直接添加,选择添加,动态注册等方式,主要区别是配置类继承的接口不同

    测试:这个内容很多,也很重要,这里讲的太简略,另开一篇详解。

    第四章 spring mvc基础 1h

    拦截器:普通的bean实现HanlderInterceptor接口,

    mvc配置要继承WebMvcConfigurer,这里可注册上面实现的拦截器

    @ControllerAdvice, 可以统一处理注解了@Controller或RequestMapping的类的共性问题,比如@ExceptionHandler,@InitBinder,@ModelAttribute

    HttpMessageConverter:默认使用jackson,没有jackson则用gson。也可以自己配置,新增自定义的HttpMessageConverter即可

    服务器端推送技术:ajax,SSE,WebSocket

    Servlet3.0+异步方法支持:这个没看明白

    spring MVC的测试: 这个很重要

    第五章 spring boot 基础 1h

    spring boot 可以通过 java -jar xx.jar 来运行

    可内嵌Tomcat、Jetty或者Undertow

    spring boot会根据类路径中的jar包、类,为jar包里的类自动配置Bean,这样会极大的减少我们要使用的配置。

    提供基于http、ssh、telnet对运行时的项目进行监控

    spring boot 快速搭建 https://start.spring.io/

    spring boot CLI :spring boot 提供的控制台命令工具

    第六章 spring boot 核心 3h

    @SpringBootApplication是一个组合注解,内部有自动配置的相关注解

    类上添加@ConfigurationProperties(prefix = "spring.data"),可以自动把值注入到同名的属性里

    运行原理:@EnableAutoConfiguration,该注解里有@AutoConfigurationPackages和EnableAutoConfigurationImportSelector,分布配置包名和类名

    其中,EnableAutoConfigurationImportSelector的原理是:

    获取所有的包里的"META-INF/spring-autoconfigure-metadata.properties"文件构建一个Properties,并将Properties包装成AutoConfigurationMetadata。
    获取所有包里的"META-INF/spring.factories"文件并从中取出所有org.springframework.boot.autoconfigure.EnableAutoConfiguration的值(这些值都是自动配置类)放入List<String> configurations中。
    从项目注解@EnableAutoConfiguration中找出自动配置的排除项目,验证该项目是否可排除,如果不可排除则报异常。从configurations中删除排除的项目。
    根据META-INF/spring-autoconfigure-metadata.properties,使用OnClassCondition方法过滤configurations的值,
    过滤的方法是:configurations的值加上".ConditionalOnClass"作为key,从spring-autoconfigure-metadata.properties获取值,这个值是个类名,
    验证这个类是否存在,如果不存在,则打印消息并跳过该自动配置。
    目前迷惑的地方是,EnableAutoConfigurationImportSelector什么时候调用,目前打断点显示不调用。
    @ConditionalOnClass,@ConditionalOnBean等注解是public的,项目中可以直接使用

    实战:自己搭建一个自动配置:待看

    第七章 spring boot 的web开发

    Thymeleaf 是spring boot推荐使用的模板引擎,可自动配置,默认目录是/templates/,默认后缀是.html

    Web相关配置

    访问静态资源和静态首页

    webMVC的自定义配置:可以继承 WebMvcConfigurerAdapter类或者实现WebMvcConfigurer接口,记得加@Configuration注解

    注册Servlet、Filter、Listener、Interceptor

    Tomcat配置

    springboot默认的是tomcat配置,配置类是ServletWebServerFactoryAutoConfiguration

    这本书里的关于代码配置tomcat部分过时了,相关的类已经被移除。

    如果要把tomcat替换成Underbow为servlet容器,只需要修改spring-boot-starter-web的依赖即可(排除tomcat依赖并添加Underbow依赖)

    SSL配置:待看

    WebSocket配置:待看

    基于Bootstrap和AngularJS的Web应用

    第八章 spring boot 的数据访问

    引入Docker

    docker常用命令 

    docker search 镜像名

    docker pull 镜像名

    docker rmi image-id

    docker rmi $(docker images -q)  //删除所有镜像

    docker run -d --name 容器名 镜像名   //-d指的是后台运行

    docker run -d -p 本机端口:容器端口 --name port-redis redis //端口映射:

    docker rmi $(docker ps -a -q)  //删除所有容器

    docker logs 容器名/容器id   //查看容器日志

    docker exec -it 容器id/容器名 bash   //登陆容器

    第九章 springboot 企业级开发 1h

    第十章 springboot 开发部署与测试 2h

    十一章 应用监控 1h

    十二章 分布式系统开发 2h

  • 相关阅读:
    top、ps -ef、ps aux的区别及内容详解
    img2pdf 报 img2pdf.AlphaChannelError: Refusing to work on images with alpha channel 的解决方案
    Scrapy命令行调用传入自定义参数
    查询Linux CPU架构
    LeetCode 216. 组合总和 III | Python
    LeetCode 40. 组合总和 II | Python
    LeetCode 39. 组合总和 | Python
    LeetCode 77. 组合 | Python
    LeetCode 347. 前 K 个高频元素 | Python
    LeetCode 107. 二叉树的层次遍历 II | Python
  • 原文地址:https://www.cnblogs.com/lakeslove/p/10951110.html
Copyright © 2011-2022 走看看