day02
一、Spring AOP原理和使用场景?
答:
AOP是面向切面的编程,系统中有很多各不相干的类的方法,在这些方法中需要调用系统功能的代码。
这时可以采用AOP的代理。
也可以理解为,AOP就是一种横切技术,它将封装的对象内部剖解开,将影响了多个目标,不属于业务逻辑,
但需要在业务中调用的逻辑封装起来,以供业务逻辑中随时调用。
程序不再调用其目标类,而是代理类,代理类和目标类具有相同的方法声明。
有两种可以实现相同方法声明的方式,一种是实现相同的接口,另一种是继承目标类。
前者就是JDK动态代理,而后者就是CGLIB动态代理。
JDK中采用Proxy类产生动态代理的方式为某个接口生成实现类,如果要为某个类生成子类,则可以使用CGLIB。
Spring AOP的使用场景,包括日志、事务、权限等。
二、Mybatis中方法如何传入多个参数?
答:
在参数列表上,每个参数前加上@Param,然后在mapper映射文件中用对应名称的#{xxx}取值,这个底层实际使用的
是Map。
三、Mybatis映射文件中的namespace有什么用处?
答:
这个namespace是唯一绑定Dao接口的,每一个映射文件的namespace都对应着一个mapper接口类。通过这个namespace,
你可以无需再写接口实现类,通过这种绑定关系来寻找接口方法所对应需要执行的SQL语句。
四、Mybatis中处理一对多关联的对象的映射的方式?
答:
第一种是额外SQL方式,通过发送额外的SQL(N + 1),在mapper文件中写association或collection,增加select属性,写上对应的,
属于其他实体的查询语句;
第二种是多表查询方式,通过多表关联查询,查出需要的多方的列,assciation中添加id和result映射。
五、ajax的原理是什么?
答:
简单来说,就是通过XmlHttpRequest对象来向服务器发送异步的请求,从服务器获得数据,使用JavaScript来操作DOM元素,
JavaScript可以即时向服务器发送请求并处理响应,而在此过程中无需阻塞用户的其它操作,因此它可以实现对页面局部的刷新,
而无需整个页面的刷新,也就是不需要重复刷新没有更新的数据。
六、简单描述SpringMVC和freemarker的集成原理?
答:
SpringMVC和freemarker的集成需要依赖freemarker包、spring-webmvc包、spring-context-support包,并且需提供freemarker的
配置对象FreeMarkerConfigurer和freemarker的视图解析对象FreeMarkerViewResolver给Spring容器,这样SpringMVC响应一个视图
,就会使用这两个对象进行视图层的处理。
七、SpringBoot如何管理dataSource?
答:
在spring-boot-starter-jdbc包中有个DataSourceProperties对象,该对象加载属性文件中的前缀为spring.datasource的属性,
另一个属性spring.datasource/type,就是所需创建的数据源的类型,然后通过DataSourceConfiguration注解来加载
spring.datasource的属性值,从而创建我们需要创建的类型的数据源。
八、SpringBoot如何控制事务?
SpringBoot使用@EnableTransactionManagement来开启事务,相当于在xml中写上<tx:annotation-driven>标签,
然后就会在spring-boot-starter-jdbc包中自动创建DataSourceTransactionManagement的事务管理对象。
九、聊聊事务的传播级别?
答:
默认的是PROPAGATION_REQUIRED:支持当前事务,若没有事务,则新建一个;若已存在事务,就加入到这个事务中。
项目中默认使用的也是这个,其他六个没有涉及到。
浙公网安备 33010602011771号