SQL-Spring-系列面试题

本文详述了Spring框架中的Bean容器、IOC与DI原理,以及Spring MVC、事务管理和MyBatis的相关面试题目,涵盖了从Spring Bean的作用域、生命周期到AOP、事务管理、MyBatis动态SQL和缓存机制等多个核心概念。内容还涉及Shiro权限管理、Struts2与SpringMVC的对比,以及Spring中的设计模式和并发安全策略。
摘要由CSDN通过智能技术生成

1.第三阶段面试题

1.1何为Spring Bean容器?Spring Bean容器与Spring IOC 容器有什么不同吗?

答:用于创建bean对象,管理bean对象的那个容器
Spring IOC 容器本质上指的的就是Spring Bean容器,
Spring Bean容器中最核心一个机制是IOC机制(
控制反转),所以有时候又将springbean容器称之为
Spring IOC 容器.

1.2Spring IOC 如何理解?

答:IOC 是Spring中提供一种控制反转机制,目的是将我们
项目中对象的依赖管理交给Spring实现,这样可以更好
实现对象关系的解耦,提高程序的可扩展性.

1.3Spring DI 如何理解?

答:DI 是Spring中的依赖注入机制,IOC的实现需要借助
这种机制.我们通常会这样理解,Spring Bean容器中的
IOC思想一种目标,DI是实现这种思想的目标的手段.

1.4Spring 中基于注解如何配置对象作用域?以及如何配置延迟加载机制?

答:@Scope(“singleton”)
@Scope(“prototype”)
@Lazy(value=true)

1.5Spring 工厂底层构建Bean对象借助什么机制?当对象不使用了要释放资源,目的是什么?何为内存泄漏?

答:借助反射机制,防止内存泄漏,对象已经不使用了但占用着内存,这种现    象称之为内存泄漏,内存泄漏不是内存溢出,但是它是内存溢出的一个导火索.    内存溢出直接就导致系统崩溃了.

1.6描述Spring MVC处理流程及应用优势

答:
1、客户端发出一个http请求给web服务器,web服务器对http请求进    行    解析,如果匹配前端控制器(或分发器/DispatcherServlet)的请求映射路径,    web容器将请求转交给DispatcherServlet.
2、DipatcherServlet接收到这个请求之后将根据请求的信息以及处理器映射    器(HandlerMapping)的配置找到处理请求的处理器(Handler)。
3、由具体的处理器适配器(HandlerAdapter)对Handler进行具体的调用。
4、Handler对数据处理完成以后将返回一个ModelAndView()对象给    DispatcherServlet。
5、DispatcherSevlet通过视图解析器(ViewResolver)将ModelAndView()转    化为真正的视图View。
6、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展    现出完整的view并返回给客户端。


1.7Spring中的事务处理方式及优缺点

   答:优点在于:
1:能够实现全局事务的控制,通过EJB CMT进行事物的管理。
2:能够保证项目模块在系统中完成的功能是可可控制的的操作(AOP)
缺点在于:
1:Spring中的事物声明有编程式事物和申明是事物

1.8MyBatis应用中#与$有什么异同点

答:
      相同点:都是通过get来获取值的
      不同点:$传进去的字符串不带引号 #号带引号

1.9MyBatis应用动态SQL解决了什么问题

答:有时候,固定的sql语句不能够满足我们的应用需求。这个时候需要在    标准的基础上建立动态的查询语句。
Mybatis提供了多种注解,可以提供动态查询语言。
比如说在开发的时候,遇到这样的场景,界面提供了多种查询,但是都是非    必填写,在选择查询条件时可以选中任意几种组合作为查询条件,如果jdbc的时候,需要判断参数为空,自己组装sql,
但是mybatis提供动态sql机制,依靠标签。

1.10Shiro框架权限管理时的认证和授权流程描述.

答:Shiro权限控制流程的原理:
应用代码 —- 调用Subject (shiro的Subject 就代表当前登陆用户) 控制权限 —- Subject 在shiro框架内部 调用 Shiro SecurityManager 安全管理器 —– 安全管理器调用 Realm (程序和安全数据连接器 )。
Subject要进行任何操作,都必须要调用安全管理器(对我们来说是自动的)。 
而安全管理器会调用指定的Realms对象,来连接安全数据。
Realms用来编写安全代码逻辑和访问安全数据,是连接程序和安全数据的桥梁。

1.11BeanFactory和ApplicationContext有什么区别?

         BeanFactory 可以理解为含有bean集合的工厂类。BeanFactory 包含了种bean的定义,以便在接收到客户端请求时将对应的bean实例化。
          BeanFactory还能在实例化对象的时生成协作类之间的关系。此举将bean自身与bean客户端的配置中解放出来。BeanFactory还包含了bean生命周期的控制,调用客户端的初始化方法(initialization methods)和销毁方法(destruction methods)。
从表面上看,application context如同bean factory一样具有bean定义、bean关联关系的设置,根据请求分发bean的功能。但application context在此基础上还提供了其他的功能。

1.12请解释Spring Bean的生命周期?

            Spring Bean的生命周期简单易懂。在一个bean实例被初始化时,需要执行一系列的初始化操作以达到可用的状态。同样的,当一个bean不在被调用时需要进行相关的析构操作,并从bean容器中移除。
            Spring bean factory 负责管理在spring容器中被创建的bean的生命周期。Bean的生命周期由两组回调(call back)方法组成。
           初始化之后调用的回调方法。
           销毁之前调用的回调方法。
          Spring框架提供了以下四种方式来管理bean的生命周期事件:
         InitializingBean和DisposableBean回调接口
         针对特殊行为的其他Aware接口
         Bean配置文件中的Custom init()方法和destroy()方法
         @PostConstruct和@PreDestroy注解方式
         使用customInit()和 customDestroy()方法管理bean生命周期的代码样例如下:

 
<beans>
    <bean id="demoBean" class="com.howtodoinjava.task.DemoBean"
            init-method="customInit" destroy-method="customDestroy"></bean>
</beans>

1.13Spring Bean的作用域之间有什么区别?

         Spring容器中的bean可以分为5个范围。所有范围的名称都是自说明的,但是为了避免混淆,还是让我们来解释一下:
singleton:这种bean范围是默认的,这种范围确保不管接受到多少个请求,每个容器中只有一个bean的实例,单例的模式由bean factory自身来维护。
prototype:原形范围与单例范围相反,为每一个bean请求提供一个实例。
request:在请求bean范围内会每一个来自客户端的网络请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收。
Session:与请求范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效。
global-session:global-session和Portlet应用相关。当你的应用部署在Portlet容器中工作时,它包含很多portlet。如果你想要声明让所有的portlet共用全局的存储变量的话,那么这全局变量需要存储在global-session中。
全局作用域与Servlet中的session作用域效果相同。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值