什么是Spring?谈谈你对Spring的理解

Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。

Spring的概念
Spring是一种多层的J2EE应用程序框架,其核心就是提供一种新的机制管理业务对象及其依赖关系。它是一种容器框架,用于创建bean,维护bean之间的关系,它可以管理web层,持久层,业务层等,可以配置各个层的组件并且维护各个层的关系

Spring目的:降低java开发的复杂性。

Spring核心思想:
控制反转(IoC)和面向切面(AOP)

Spring的优点
1.低侵入式设计,代码污染低。
2.独立于各种应用服务器。
3.Spring的DI机制降低了业务对象替换的复杂性,提高了组件之间的解耦。
4.Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问
5.支持声明式事务处理

Spring Bean的生命周期:
什么是Spring?谈谈你对Spring的理解Spring对bean进行实例化,默认bean是单例;
Spring对bean进行依赖注入;
如果bean实现了BeanNameAware接口,spring将bean的id传给setBeanName()方法
如果bean实现了BeanFactoryAware接口,spring将调用setBeanFactory方法,将BeanFactory实例传进来;
如果bean实现了ApplicationContextAware接口,它的setApplicationContext()方法将被调用,将应用上下文的引用传入到bean中;
如果bean实现了BeanPostProcessor接口,它的postProcessBeforeInitialization方法将被调用;
如果bean实现了InitializingBean接口,spring将调用它的afterPropertiesSet接口方法,类似的如果bean使用了init-method属性声明了初始化方法,该方法也会被调用;
如果bean实现了BeanPostProcessor接口,它的postProcessAfterInitialization接口方法将被调用;
此时bean已经准备就绪,可以被应用程序使用了,他们将一直驻留在应用上下文中,直到该应用上下文被销毁;
若bean实现了DisposableBean接口,spring将调用它的distroy()接口方法。同样的,如果bean使用了destroy-method属性声明了销毁方法,则该方法被调用;

Spring有哪些主要模块,各自有什么作用?
1.Spirng Core:框架最基础部分,提供IOC和依赖注入特性。
2.Spring Context:提供上下文信息,基于bean。
3.Spring DAO:提供JDBC的抽象层,提供了声明式事务和编程式事务的支持。
4.Spring ORM:提供常用的“对象关系”映射APIS集成层。
5.Spring AOP:提供了符合AOP Alliance规范的面向方面的编程实现。
6.Spring Web:提供了基础的针对Web开发的集成特性,例如多方文件上传,利用Servlet listeners进行IOC容器初始化和针对Web的ApplicationContext。当与WebWork或Struts一起使用Spring时,这个包使Spring可与其他框架结合。
7.Spring Web MVC: 提供了Web应用的Model-View-Controller(MVC)实现。Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种清晰的分离模型,在领域模型代码和Web Form之间。并且,还可以借助Spring框架的其他特性。

Spring Bean的作用域:
什么是Spring?谈谈你对Spring的理解
Spring自动装配:
如何使用自动装配:设置bean元素的autowire属性。

Spring提供了四种自动装配类型
什么是Spring?谈谈你对Spring的理解
需要注意的地方:什么是Spring?谈谈你对Spring的理解