SpringMVC总结笔记01

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hlw521hxq/article/details/83448468

Spring表达式

原理

重要的类:

  • SpelExpressionparser:SpringEL解析表达器–》父类Expressionparse

  • StandardEvaluationContext:直译:标准化评估语境—》父类EvaluationContext

    方法:

    • parseExpression():解析器对象调用解析
    • getValue():解析表达对象调用,获取值
    • getValue(解析域对象):解析表达对象调用,返回解析域对象的值

对于引用类型:不用解析域对象,直接解析

xml配置解析器

Spring事务

管理jdbc-连接数据库事务

连接数据库

导入jar包
  • Spring-jdbc:连接数据库
  • mysql-connector-java:连接
  • commons-dbcp:连接池
  • spring-tx:事务
  • c3p0:连接池

c3P0连接池

queryForObject

new RowMapper<Users>() {
                    public Users mapRow(ResultSet resultSet, int i) throws SQLException {
                        return chuliresult(resultSet);
                    }

重要的类:

ComboPooledDataSource:负责连接数据库

JdbcTemplate:负责sql操作,相当于封装的sql工具类,负责Dao与持久层的家伙

DataSourceTransactionManager:事务管理类

需要学习的类

  • DispatcherServlet:作为前端控制器,整个流程控制的中心,控制其它组件执行,统一调度,降低组件之间的耦合性,提高每个组件的扩展性。
  • HandlerMapping:通过扩展处理器映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
  • HandlAdapter:通过扩展处理器适配器,支持更多类型的处理器,调用处理器传递参数等工作!
  • ViewResolver:通过扩展视图解析器,支持更多类型的视图解析,例如:jsp、freemarker、pdf、excel等。

事务管理

事务的传播行为*

  • (1)PROPAGATION_REQUIRED
    表示当前方法必须运行在事务中。如果当前事务存在,方法将会在该事务中运行。否则,会启动一个新的事务
  • (2)PROPAGATION_SUPPORTS
    表示当前方法不需要事务上下文,但是如果存在当前事务的话,那么该方法会在这个事务中运行
  • (3)PROPAGATION_MANDATORY
    表示该方法必须在事务中运行,如果当前事务不存在,则会抛出一个异常
  • (4)PROPAGATION_REQUIRED_NEW
    表示当前方法必须运行在它自己的事务中。一个新的事务将被启动。
    如果存在当前事务,在该方法执行期间,当前事务会被挂起。
    如果使用JTATransactionManager的话,则需要访问TransactionManager
  • (5)PROPAGATION_NOT_SUPPORTED
    表示该方法不应该运行在事务中。如果存在当前事务,在该方法运行期间,当前事务将被挂起。
    如果使用JTATransactionManager的话,则需要访问TransactionManager
  • (6)PROPAGATION_NEVER
    表示当前方法不应该运行在事务上下文中。如果当前正有一个事务在运行,则会抛出异常
  • (7)PROPAGATION_NESTED
    表示如果当前已经存在一个事务,那么该方法将会在嵌套事务中运行。
    嵌套的事务可以独立于当前事务进行单独地提交或回滚。
    如果当前事务不存在,那么其行为与PROPAGATION_REQUIRED一样。
    注意各厂商对这种传播行为的支持是有所差异的。可以参考资源管理器的文档来确认它们是否支持嵌套事务

事务的特性ACID

  • 原子性(atomicity)
  • 一致性(consistency)
  • 隔离性(isolation)
  • 持久性(durability)

事务并发引起的问题

  • 脏读

    一个事务读取到另外一个可能回滚的事务数据 ,是一个脏的数据。对应事务隔离性

  • 不可重复读

    在同一个事务中两次读取到的数据不一致,由于两次查询过程的时间中,发生了更新或者增删改的操作,违背一致性

  • 幻读

    插入事务执行中,查询事务查询过来,发现数据没有变化,实际上,插入操作正在进行

事务隔离级别

  • 读未提交
  • 读已提交
  • 可重复读
  • 串行化

猜你喜欢

转载自blog.csdn.net/hlw521hxq/article/details/83448468