一、简要的谈一谈Spring框架有哪些优点(至少写出三点)。
1.方便解耦,简化开发:
Spring就像是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理(代码没有入侵性)
2.AOP编程的支持:
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能(便于功能扩展)
3.声明式事务的支持:
只需要通过配置就可以完成对事务的管理,而无需手动编程
4.方便集成各种优秀框架:
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、MyBatis等)的直接支持
5.降低JavaEE API的使用难度:
Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低
二、IOC和DI分别是什么?
IOC:控制反转是对组件中对象控制权的转移,把传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象组件的装配和管理。
DI:Spring通过IOC的技术促进了松耦合。当应用了IOC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象,容器在对象初始化时就会主动将依赖传递给它。
三、@Component 和 @Bean 的区别是什么?
作用对象不同: @Component 注解作用于类,@Bean注解作用于方法。
@Component通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中。
@Bean 注解通常是我们在标有该注解的方法中定义产生这个bean,@Bean告诉了Spring这是某个类的实例。
@Bean 注解比 Component 注解的自定义性更强。
四、将一个类声明为IoC管理的bean的注解有哪些?
@Component :通用的注解,可标注任意类为 Spring 组件。
@Repository: 对应持久层即 Dao 层,主要用于数据库相关操作。
@Service : 对应服务层,主要涉及一些复杂的逻辑。
五、SpringMVC的流程
浏览器、DispatcherServlet前端控制器、HandlerMapping处理器映射器、HandlderAdapter处理器适配器、Handler处理器(Controller)、ViewResolver视图解析器、View
HTTP请求
请求查找Handler
返回一个执行链
请求适配器
执行Handler
返回ModelAndView
返回ModelAndView
请求到视图解析器
返回View
视图渲染
HTTP响应
5.1 Spring流程图集