1,什么是mybatis?
MyBatis是一款基于Java的持久层框架,将数据库操作的SQL语句映射为Java方法,用Java方法代替了直接使用SQL语句,MyBatis提供了XML或注解的方式来定义SQL语句,通过MyBatis的SQLSession执行方法来操作数据库。
2,mybatis的优缺点
优点
MyBatis 不会对应用程序或者数据库的现有设计强加任何影响,SQL 写在 XML 中,和程序逻辑代码分离,降低耦合度,便于同一管理和优化,提高了代码的可重用性。
提供 XML 标签,支持编写动态 SQL 语句。
提供映射标签,支持对象与数据库的 ORM 字段关系映射。
缺点
编写 SQL 语句工作量较大,对开发人员编写 SQL 语句的功底有一定要求
3、什么是Spring
Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架
4、什么是IOC/DI?
IOC:控制反转,对象的创建不再由原来的程序负责,交给第三方的容器负责
DI:依赖注入,DI 本质上是实现IOC 的一种方式,对象之间的依赖关系交给Spring容器负责注入进来。
5、Bean的作用域
singleton:默认值,单例模式,表示在 Spring 容器中只有一个 Bean 实例
prototype:原型模式,表示每次通过 Spring 容器获取 Bean 时,容器都会创建一个新的 Bean 实例。
request:每次 HTTP 请求,容器都会创建一个 Bean 实例。该作用域只在当前 HTTP Request 内有效。
session:同一个 HTTP Session 共享一个 Bean 实例,不同的 Session 使用不同的 Bean 实例。该作用域仅在当前 HTTP Session 内有效。
6、spring注入的方式有哪几种
1.设值注入:通过set方法实现属性的注入
2.构造注入:通过构造方法实现属性的注入
3.自动装配:
byName:按名字自动装配
byType:按类型自动装配
constructor:根据构造器参数的数据类型,进行 byType 模式的自动装配。
default:默认采用上一级元素 <beans> 设置的自动装配规则进行装配。
no:默认值,不使用自动装配
7、使用注解定义bean
@Component:可以作用在应用的任何层次,例如 Service 层、Dao 层等。 使用时只需将该注解标注在相应类上即可。
@Repository:该注解用于Dao 层其功能与 @Component 相同。
@Service:该注解通常作用在Service 层,其功能与 @Component 相同。
@Controller:该注解通常作用在控制层,其功能与 @Component 相同。
8、使用注解方式实现依赖注入
@Autowired :自动注入,根据类型自动注入
@Qualifier:配合@Autowired注解使用,用来指定具体的名称
@Resource :默认根据名字注入,如果注入失败,再根据类型注入
9、什么是AOP
面向切面编程;是对OOP(面向对象)思想的补充:(封装、继承、多态);aop是横向扩展;为了解决共性问题(日志,权限,事务,异常);,将共性问题的解决方案单独抽象出来,利用横切技术切入的系统中。
10、术语解释:
Joinpoint(连接点):指那些被拦截到的点,在Spring中,指可以被动态代理拦截目标类的方法。
Pointcut(切入点):指要对哪些Joinpoint进行拦截,即被拦截的连接点。
Advice(通知):指拦截到Joinpoint之后要做的事情,即对切入点增强的内容。
Target(目标):指代理的目标对象。
Weaving(植入):指把增强代码应用到目标上,生成代理对象的过程。
Proxy(代理):指生成的代理对象。
Aspect(切面):切入点和通知的结合。
11、springaop底层实现原理?
动态代理:
1、目标接口:jdk动态代理
2、目标类:cglib动态代理