1.Spring理解
Spring 是一个开源框架,为简化企业级应用开发而生。Spring 可以是使简单的
JavaBean 实现以前只有 EJB 才能实现的功能。Spring 是一个 IOC 和 AOP 容器框架。
Spring 容器的主要核心是:
控制反转(IOC),传统的 java 开发模式中,当需要一个对象时,我们会自己使用 new 或者 getInstance 等直接或者间接调用构造方法创建一个对象。而在 spring 开发模式中,spring 容器使用了工厂模式为我们创建了所需要的对象,不需要我们自己创建了,直接调用 spring 提供的对象就可以了,这是控制反转的思想。
依赖注入(DI),spring 使用 javaBean 对象的 set 方法或者带参数的构造方法为我们在创建所需对象时将其属性自动设置所需要的值的过程,就是依赖注入的思想。
面向切面编程(AOP),在面向对象编程(oop)思想中,我们将事物纵向抽成一个个的对象。而在面向切面编程中,我们将一个个的对象某些类似的方面横向抽成一个切面,对这个切面进行一些如权限控制、事物管理,记录日志等公用操作处理的过程就是面向切面编程的思想。AOP 底层是动态代理,如果是接口采用 JDK 动态代理,如果是类采用CGLIB 方式实现动态代理。
2.bean的四种注入方式
1.set方法注入
2.构造器注入
3.静态工厂注入
4.实例工厂注入
3.@Autowired和@Resource
1.@Autowired是Spring的,@Resource是JDK里javax包下的。
2.@Autowired默认按类型匹配,@Resource默认按名称匹配
4.mybatis里#与$区别
1.#方式能够很大程度防止 sql 注入。
2.$方式无法防止 Sql 注入。
3.$方式一般用于传入数据库对象,例如传入表名.
4.一般能用#的就别用$.
5.mybitas里sql语句什么情况会导致索引失效
where语句中包含or时,可能会导致索引失效使用or并不是一定会使索引失效,你需要看or左右两边的查询列是否命中相同的索引。
where语句中索引列使用了负向查询,可能会导致索引失效
索引字段可以为null,使用is null或is not null时,可能会导致索引失效
在索引列上使用内置函数,一定会导致索引失效
对索引列进行运算,一定会导致索引失效
like通配符可能会导致索引失效
联合索引中,where中索引列违背最左匹配原则,一定会导致索引失效