ssm面试题整理

spring的核心

spring我经常用到的两个核心就是IOC 和 AOP

  • IOC主要是负责维护管理对象解耦
    底层
    ioc的底层是一个MAP容器 使用工厂模式BeanFactory Properties读取配置文件形成流通过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执行器 执行事物

${ } 和 #{ }的区别以及什么情况下要用 ${ }
说一下堆和栈的对象

${}用在我们能够确定值的地方,表名或列名

回答: 首先,@SessionAttributes注解可以在类上面加上,里面包含的字符串就是要放入session里面的key。通过Jackson框架可以将Java对象直接转化成可以识别的Json对象。具体步骤包括加入Jackson.jar,配置json的映射,以及在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解。\[1\] MyBatis的好处是可以将SQL语句从Java源程序中独立出来,放在单独的XML文件中编写,给程序的维护带来了很大便利。此外,MyBatis封装了底层JDBC API的调用细节,并能自动将结果集转换成Java Bean对象,简化了Java数据编程的重复工作。相比于全自动ORM框架,如Hibernate,MyBatis需要程序员自己编写SQL语句,因此能够更灵活地控制SQL语句,实现更高的查询效率,能够完成复杂查询。\[2\] 关于MyBatis的缓存,它可以提高查询性能。MyBatis的缓存分为一级缓存和二级缓存。一级缓存是SqlSession级别的缓存,它默认开启,可以减少对数据的访问次数。二级缓存是Mapper级别的缓存,可以跨SqlSession共享数据,需要手动配置开启。使用缓存可以减少对数据的访问,提高系统性能。但是需要注意缓存的更新和失效机制,以保证数据的一致性。\[3\] #### 引用[.reference_title] - *1* *2* *3* [JavaSSM框架精选50道面试题](https://blog.csdn.net/qq_41735004/article/details/87199651)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值