spring的核心
spring我经常用到的两个核心就是IOC 和 AOP
-
IOC主要是负责
维护管理对象
和解耦
底层:
ioc的底层是一个MAP容器 使用工厂模式BeanFactoryProperties
读取配置文件形成流通过property.getProperty("beanID")
获得当前bean的全限定类名,根据Class.forName()
进行反射,获取对象bean,再put
进入map
用法:
在配置文件中配置bean标签 使用class属性以及id便于获取bean放入容器
或者
在类上加@Configuration注解在相应的方法上@bean(id="")来放入容器
依赖注入
当大家都放到容器map当中就能够达到一定程度的解耦 比如从前的MVC三层架构 都是调用者new一个被调用者 而现在我们可以采用依赖注入
使用set或者constructor或者接口进行依赖注入来调用
@Autowired 类型 @Resorcces名字
控制反转
从前是我们自己去new对象 现在是将权限给了框架 -
AOP:
oop思想 与业务逻辑没有关系但是和业务逻辑一起被调用的代码很多
我们希望将其抽出来 通常是事物管理 日志管理 权限管理
动态代理
PRoxy类 InnvactionHANDEL接口 横切代码
proxy.new Instance(加载其 接口 Innovationhandel)
method.invoke
1.aop中增强的方法都有哪些注解?一个切面下他们执行的顺序?
@around @before @after @afterReturning @afterThrowing
可以看第一篇文章或者第三篇
2. @before可以被打断么?
1.aop中多个aspect 多个aspect的顺序怎么布置?
实现注解的order接口进行getOrder()来返回具体的顺序
注解@Order(1)
配置文件加order=" "
并且order越小越先执行 越后结束
请看第2篇文章的实心圆图片和第一篇文章中两个aspect的增强流程图
2.多个切面的增强方法怎么执行?
同样看第一篇文章的流程图
按顺序读以下的文章
1.Spring AOP @Before @Around @After 等 advice 的执行顺序
2怎么控制多个aop的执行循序
3.Spring AOP之坑:完全搞清楚advice的执行顺序
2.@around @before @after @afterReturning @afterThrowing
正常的执行顺序是
aop-> @around -> @before -> Method --> @around-->@after ->@afterReturning
出现异常的执行顺序
aop->@around->@before ->Method ->@around-->@after -> @afterThrowing
SpringMVC
1.controller是单例还是多例的? 默认单例
多例的关键字是什么? socpe=“prototype”
SpringMVC Controller单例和多例
2.多例的多个controller调用的顺序是什么?
3.扫描的包 都扫描什么范围?
Mybatis:
sqlsessionfactorybuilder是一个构建器 为了是生成sqlsessionfactory的接口实现类 首先inputstream读取一个流 在生成实现类的时候会生成xmlconfig读取流 生成全局配置文件对象configuration 将对象赋给sqlsessionfactory就生成了接口
sqlseesion tracnsation接口 excuor执行器 执行事物
${ } 和 #{ }的区别以及什么情况下要用 ${ }
说一下堆和栈的对象