spring笔记

一些记录

  • id选择器

    • id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。HTML元素以id属性来设置id选择器,CSS 中 id 选择器以 “#” 来定义。
    #para1
    {
        text-align:center;
        color:red;
    }
    
  • class选择器

    • class 选择器用于描述一组元素的样式,class 选择器有别于id选择器,class可以在多个元素中使用。class 选择器在HTML中以class属性表示, 在 CSS 中,类选择器以一个点"."号显示
    .center {text-align:center;}
    

JavaScript记录

JavaScript 显示数据

JavaScript 可以通过不同的方式来输出数据:

  • 使用 window.alert() 弹出警告框。

  • 使用 document.write() 方法将内容写到 HTML 文档中。

  • 使用 innerHTML 写入到 HTML 元素。

  • 使用 console.log() 写入到浏览器的控制台。

JavaScript 是一个脚本语言。它是一个轻量级,但功能强大的编程语言。

Mybatis

  • 使用Mybatis需要Mybatis-config.xml文件配置数据库基本信息
  • 需要xxxMapper.xml文件配置数据库查询与绑定语句
  • 使用接口编程

OGNL表达式一般用于动态SQL

OGNL会进行字符串与数字的转换

Mybatis缓存

  • 一级缓存(本地缓存)

    • 与数据库同一次会话期间查询到的数据会放到本地缓存中,以后如果需要获取相同的数据直接从缓存中拿取,没必要再去查询数据库
    • 一级缓存失效的四种情况
      • sqlSession不同则一级缓存失效
      • sqlSession相同,但是查询条件不同,一句缓存失效
      • sqlSession相同,但是两次查询之间执行了增删改操作,这次增删改可能对当前数据有影响
      • sqlSession相同,但是手动清除了一级缓存
  • 二级缓存(全局缓存)基于namespace 级别的缓存,一个namespace对应一个二级缓存

    • 工作机制

      • 一个会话,查询一条数据,这个数据就会被放在当前会话的一级缓存中
      • 如果会话关闭,一级缓存中数据会被保存在二级缓存中,新的查询信息就可以参照二级缓存中的内容
      • 不同namespace查询的数据会放在对应的缓存中(map)
    • 使用

      1. 开启全局二级缓存配置
      <setting name="cacheEnabled" value="true"></setting>
      
      1. 去mapper.xml中配置使用二级缓存
      <cache eviction="" flushInterval="" readOnly="" size="" type=""></cache>
      <!--
      	evication:缓存回收策略
      	LRU – 最近最少使用:移除最长时间不被使用的对象。
      		FIFO – 先进先出:按对象进入缓存的顺序来移除它们。
              SOFT – 软引用:基于垃圾回收器状态和软引用规则移除对象。
              WEAK – 弱引用:更积极地基于垃圾收集器状态和弱引用规则移除对象。
       	flushInterval:缓存刷新间隔
      	readOnly:缓存是否只读
      		true(只读):mybatis认为所有从缓存中获取的操作都是只读操作,不会修改数据;mybatis为了加快获取速度,直接会将数					据在缓存中的引用交给用户。不安全,但速度快
      		false(非只读):mybatis会利用序列化&反序列化技术克隆一份新数据给用户。安全,但速度满
      	size:缓存存放多少个数据
      	type:指定自定义缓存全类名
      -->
      
      1. pojo需要实现序列化接口

SpringMVC注解配置详解

@requestMapping

  • RequestMapping是一个用来处理请求地址映射的注解(将请求映射到对应的控制器方法中),可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
    RequestMapping请求路径映射,如果标注在某个controller的类级别上,则表明访问此类路径下的方法都要加上其配置的路径;==

@RequestParam

  • 用于将请求参数区数据映射到功能处理方法的参数上

@PathVariable绑定URI模板变量值

  • 用于将请求URL中的模板变量映射到功能处理方法的参数上
@RequestMapping(value="/users/{userId}/topics/{topicId}")
public String test(
       @PathVariable(value="userId") int userId, 
       @PathVariable(value="topicId") int topicId)   

@Controller

  • Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示

@Repository

  • 用于注解dao层

SpringBoot

自动配置原理

  1. SpringBoot启动时加载主配置类,开启了自动配置功能@EnableAutoConfiguration
  2. @EnableAutoConfiguration的作用:
    • 利用EnableAutoConfigurationImportSelector给容器中导入组件
    • 可以参照selectimports()方法中的内容

原理总结:将类路径下的META-INF/spring.factories里面配置的所有EnableAutoConfiguration的值加入到容器中

  1. 每一个自动配置类进行自动配置功能

精髓

  • SpringBoot启动时会加载大量的自动配置类
  • 观察我们需要的功能有没有SpringBoot默认写好的自动配置类‘
  • 再看这个自动配置类中配置了哪些组件,只要需要的组件有,我们就不需要再来配置
  • 给容器中自动配置类添加组件的时候,会从properties类中获取某些属性,我们就可以在配置类中指定这些属性的值

SpringBoot日志关系

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
</dependency>
  • 总结:SpringBoot底层也是使用SLF4J+logback方式进行日志记录
  • SpringBoot将其他的日志替换成slf4j
  • 如果引入其他框架,必须将该框架的默认日志依赖移除

SpringBoot对静态资源的映射规则

public void addResourceHandlers(ResourceHandlerRegistry registry) {
            if (!this.resourceProperties.isAddMappings()) {
                logger.debug("Default resource handling disabled");
            } else {
                Integer cachePeriod = this.resourceProperties.getCachePeriod();
                if (!registry.hasMappingForPattern("/webjars/**")) {
                    this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{"/webjars/**"}).addResourceLocations(new String[]{"classpath:/META-INF/resources/webjars/"}).setCachePeriod(cachePeriod));
                }

                String staticPathPattern = this.mvcProperties.getStaticPathPattern();
                if (!registry.hasMappingForPattern(staticPathPattern)) {
                    this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{staticPathPattern}).addResourceLocations(this.resourceProperties.getStaticLocations()).setCachePeriod(cachePeriod));
                }

            }
        }
  • 所有/webjars/*都去classpath:/META-INF/resources/webjars/寻找资源

    • webjars:以jar包的方式引入静态资源
  • /**访问当前项目下任何资源(静态资源文件夹)

"classpath:/META-INF/resources/",
"classpath:/resources/",
"classpath:/static/",
"classpath:/public",
"/":当前项目根路径

SpringBoot启动配置原理

  • 启动流程
    • 创建SpringApplication对象
      1. 保存主配置类
      2. 判断当前是否为一个web应用
      3. 从类路径下找到META-INF/spring.factories配置的所有ApplicationContextInitializer;然后保存起来
      4. 从类路径下找到META-INF/spring.factories配置的所有ApplicationListener
      5. 从多个配置中找到有main方法的主配置类
    • 运行Run方法
      1. 从类路径下META-INF/spring.factories,获取springApplicationRunListerner
      2. 回调所有获取springApplicationRunListerner.toString()方法
      3. 封装命令行参数
      4. 准备环境
      5. 创建ApplicationContext;决定创建web的IOC还是普通IOC
      6. 准备上下文环境,将environment保存到IOC中
      7. 回调之前保存的所有ApplicationContextInitializer的initialize()方法

Docker核心概念

  • Docker主机:安装了Dockcer程序的机器(Docker直接安装在系统上)
  • Docker客户端:连接Docker主机进行操作
  • Docker仓库:用来保存各种打包好的软件镜像
  • Docker镜像:软件打包好的镜像,放在Docker仓库中
  • Docker容器:镜像启动后的实例称为一个容器。容器时独立运行的一个或一组应用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值