学习随笔之Spring

学习随笔之Spring

1.自己对Spring框架的理解.

  • Spring是一个轻量级的 ioc 与 aop 的容器框架,我们使用了 spring 之后他的控制反转特性就能帮我们管理对象以及对象的生命周期,spring 容器启动时就帮我们创建好了对象,我们需要使用时用@Autowird,@Resource这两个注解注入对象就可以了,使用 Aop 面向切面编程可以使我们的程序耦合度降低,程序更容易扩展,代码复用性更高,例如日志,事务控制,以及权限控制等使用起来也很方便只需要在需要的地方加上@transactional就可以了。

2.Spring中Bean的生命周期

  • Spring 中 Bean的生命周期在整个 Spring 中占有很重要的位置,从BeanFactory,ApplicationContext取得的实例为Singleton,每一个Bean的别名只能维持一个实例,而不是每次都产生一个新的对象,使用Singleton模式产生单一实例,在spring中,singleton属性默认是true,只有手动设定为false,则每次指定别名取得的Bean时都会产生一个新的实例,Spring只帮我们管理单例模式Bean的完整生命周期,对于prototype的bean,Spring在创建好交给使用者之后则不会再管理后续的生命周期。

3.Spring中BeanFactory与ApplicationContext有什么区别?

  • 他们是Spring中两种不同的容器,Spring的IoC容器就是一个实现了BeanFactory接口的可实例化类,在Spring中BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的生命周期,ApplicationContext继承了BeanFactory除了上述功能之外还做了扩展 : 国际化支持, 资源访问:Resource rs = ctx. getResource(“classpath:config.properties”), “file:c:/config.properties”、事件传递:通过实现ApplicationContextAware接口。初始化时BeanFactory并不会实例化Bean是一种懒加载,初始化会快一点,而ApplicationContext在初始化就会实例化Bean,启动相对来说会慢一点。

图解

学习随笔之Spring

BeanFactory与FactoryBean的区别?

  • BeanFactory定义了 IOC 容器的最基本形式,并提供了 IOC 容器应遵守的的最基本的接口,也就是 Spring IOC 所遵守的最底层和最基本的编程规范。BeanFactory 只是个接口,并不是 IOC 容器的具体实现。 BeanFactory是个 Factory ,也就是 IOC 容器或对象工厂, FactoryBean 是个 Bean 。在 Spring 中,所有的 Bean 都是由 BeanFactory( 也就是 IOC 容器 ) 来进行管理的。但对 FactoryBean 而言,这个 Bean 不是简单的 Bean ,而是一个能生产或者修饰对象生成的工厂 Bean, 它的实现与设计模式中的工厂模式和修饰器模式类似。