Spring是针对企业级应用而开发的开源型框架。其核心主要包括IOC(控制反转)
、DI(依赖注入)
以及AOP(面向切面编程)
。
new
或者getInstance
方法来直接或间接创造,而在Spring中,其可以通过工厂模式为我们创建所需要的对象,我们只需要直接调用就可以了set方法
或带参数的构造方法
为创造的对象自动设置所需要的值自动装配提供种中不同的模式供Spring容器自动装备Bean之间的依赖注入:
jdk动态代理
与cglib代理
jdk动态代理
的方式,其通过该接口的实现类进行动态代理cglib代理
的方式,其通过该类的一个集成子类进行动态代理不是,主要体现在多线程操作同一对象时,对这个对象的非静态变量的写操作。但是同样有两种解决方案:
@Transaction
的声明式事务事务的传播是为了解决业务层方法之间的相互调用的事务问题,分为三个大类:
TransactionDefinition.ISOLATION_REPEATABLE_READ
,Oracle采用TransactionDefinition.ISOLATION_READ_COMMITTED
Spring的通知指的是方法执行前后要做的动作,有5种类型:
@Builder
注解,可以实现建造者模式,核心包括链式编程
、静态内部类的使用
以及build()方法创建外部对象
首先需要明确几个重要概念:
解决循环依赖的流程:
redirect::
forward:
resultMap
进行手动映射as
起别名注:对于MyBatis Plus可以直接在实体类上添加@TableField注解进行映射或者使用resultType
limit
达到分页的目的trim
、where
、set
、foreach
、if
、choose
、when
、otherwise
、bind
sqlSessionFactoryBuilder
、XMLConfigBuilder
sqlSessionFactory
、ObjectFactory
ErrorContext
、LogFactory
SqlNode
及其子类ChooseSqlNode
BaseExecutor
、SimpleExecutor
cache.decorators
子包PropertyTokenizer