赞
踩
仅记录学习笔记,如有错误欢迎指正。
最近打算重新整理一下笔记,好好回顾一下之前学的东西。争取在6月份之前整理完毕,加油加油。
通过SqlSessionFactoryBuilder从mybatis-config.xml配置文件中构建出SqlSessionFactory。
SqlSessionFactory开启一个SqlSession,通过SqlSession实例获得Mapper对象并且运行Mapper映射的Sql语句。
完成数据库的CRUD操作和事务提交,关闭SqlSession。
#{}是占位符,预编译处理;${}是拼接符,字符串替换,没有预编译处理。
Mybatis在处理#{}时,#{}传入参数是以字符串传入,会将SQL中的#{}替换为?号,调用PreparedStatement的set方法来赋值。
Mybatis在处理时 , 是 原 值 传 入 , 就 是 把 {}时,是原值传入,就是把时,是原值传入,就是把{}替换成变量的值,相当于JDBC中的Statement编译
变量替换后,#{} 对应的变量自动加上单引号 ‘’;变量替换后,${} 对应的变量不会加上单引号 ‘’
#{} 可以有效的防止SQL注入,提高系统安全性;${} 不能防止SQL 注入
一级缓存: 基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓存。
二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap 存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置
Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。
如果这个Bean在Spring配置文件中配置了init-method属性会自动调用其配置的初始化方法
如果这个Bean关联了BeanPostProcessor接口,将会调用postAfterInitialization(Object obj, String s)方法(注意:以上工作完成以后就可以用这个Bean了,那这个Bean是一个single的,所以一般情况下我们调用同一个ID的Bean会是在内容地址相同的实例)
当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean接口,会调用其实现的destroy方法
最后,如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的销毁方法
事务的传播行为,默认值为 Propagation.REQUIRED。可以手动指定其他的事务传播行为,如下:(不会存在循环事务的可能)
如果当前存在事务,则加入该事务,如果当前不存在事务,则创建一个新的事务。
如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事务的方式继续运行。
如果当前存在事务,则加入该事务;如果当前不存在事务,则抛出异常。
重新创建一个新的事务,如果当前存在事务,延缓当前的事务。
以非事务的方式运行,如果当前存在事务,暂停当前的事务。
以非事务的方式运行,如果当前存在事务,则抛出异常。
如果没有,就新建一个事务;如果有,就在当前事务中嵌套其他事务。
构造器注入构成的循环依赖,此种循环依赖方式是无法解决的,只能抛出BeanCurrentlyInCreationException异常表示循环依赖。这也是构造器注入的最大劣势
根本原因:Spring解决循环依赖依靠的是Bean的“中间态”这个概念,而这个中间态指的是已经实例化,但还没初始化的状态。而构造器是完成实例化的东西,所以构造器的循环依赖无法解决~~~
因为在二级缓存里面可能是执行完BeanPostProcess生成的代理对象,多线程情况下每个对象都不一样,就无法确定取得的对象。
SpringMVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型。MVC: Model View Controller 模型-视图-控制器 。
视图:展示给用户的视图;
模型:表示数据和业务处理规则。模型返回的数据是独立的,这样的一个模式能够为多个视图提供数据,这样一来模型的代码只需要写一次便能够被多个视图重用,减少了代码的重复性;
控制器:接受用户的输入并调用相应的模型和视图来完成用户的需求。
springboot 的核心功能:
1.独立运行的spring项目:可以以jar/war包的形式独立运行,在cmd下打 Java - jar xxx.jar
2.内置的servlet容器:不依赖于外部的tomcat,自带服务器,快速运行;
3.提供starter简化maven配置:简化maven配置,大大减少配置,“约定优于配置”
4.自动装配:springboot通过@EnableAutoConfiguration吧@configuration和@bean的方法加载到spring容器里。
@SpringBootApplication 里面有 @ EnableAutoConfiguration(开启自动配置):
功能由@Import提供,其导入的AutoConfigurationImportSelector的selectImports()方法通过SpringFactoriesLoader.loadFactoryNames()扫描所有具有META-INF/spring.factories的jar包。spring-boot-autoconfigure-x.x.x.x.jar里就有一个这样的spring.factories文件
自动配置类都是在某些条件之下才会生效的,这些条件的限制在Spring Boot中以注解的形式体现,常见的条件注解有如下几项:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。