【好记性不如烂笔头】Spring框架内容问答的形式回忆-长期更新

Spring框架内容问答的形式回忆

  回忆一下Spring框架的相关知识,因为是回忆算不得准确,只是个人记录,加深Spring的印象。(长期更新补充)


请你简述一下Spring框架

  Spring是一个针对bean管理的轻量级容器框架,它提供了强大的IOC、AOP、Web MVC等强大的功能。它可以单独的构筑应用程序,也可以和Struts、webwork等其他的web框架组合使用,还可以和swing等桌面应用程序AP组合。所以Spring不仅仅可以用于J2EE程序中,还可以用于桌面应用程序以及小应用程序之中。


为什么说是轻量级容器框架,那有没有重量级的?

  有对比才会有轻量级和重量级的区分。比如和EJB容器对比,SpringCore文件容量不到1MB,资源负担也很小,入门也简单,而且Spring本身是非侵入式的。Spring中的对象不依赖Spring的特定类。而EJB容器则需要消耗大量的资源,相对来说,Spring就是轻量级的、EJB就是重量级的。


刚刚你说到Spring是针对Bean管理的,那它是怎么管理bean的?

  Spring是一个容器,容器就是一个可以放东西的地方。Spring中容器一般理解为BeanFactory或ApplicationContext。而这些容器就是管理bean的。

  BeanFactory是工厂模式,主要是读取bean配置、管理bean的加载、实例化、维护bean之间的依赖关系、也负责bean的生命周期。BeanFactory在对象getBean的时候才对对象进行初始化。

  ApplicationContext是在BeanFactory上的一个增强,不仅有BeanFactory的功能,还提供了国际化支持、AOP、事务等。ApplicationContext在解析配置文件时候就对配置文件中对象进行了初始化,getBean只是获取对象。

  Spring通过Xml配置文件或者注解来管理容器中的bean,就是说有这样一个Xml配置文件,里面配置了bean的相关信息,然后Spring去读取这个配置文件,解析出其中的内容,找到需要完成初始化的ClassName,然后进行初始化。初始化后的bean放在map中,应该不止一个map,因为获取bean的可能性有,通过名字获取、通过类型获取、通过接口获取,可能还有别的没记住。之后还会提供查询的接口,来获取这些bean。


那我们一般怎么获取bean呢?

  BeanFactoryAware和ApplicationContextAware

  BeanFactoryAware是通过bean工厂容器获取bean对象,而ApplicationContextAware是通过ApplicationContextAware获取bean对象,在使用过程中要注意区分用的是哪个容器,再用对应的aware

  BeanFactory最常用的实现是XmlBeanFactory,用ClassPathXmlApplicationContext加载xml配置将bean注入。

  ApplicationContext是BeanFactory的一种增强,一般我们都用的ApplicationContext,所以在ApplicationContextAware获取bean对象。


你简述一下IOC和AOP

  IOC 控制反转,就是本来我们获取依赖对象是通过自己主动去创建获取的,但是Spring通过容器创建bean对象,然后谁要用这个对象,Spring容器就把这个对象注入到你这,让你可以用。DI依赖注入就是IOC思想的具体实现,一般是Set注入、构造器注入、注解注入

  AOP 面向切面编程,就是可以想想是原来的编程流程是水道,AOP就横向的架在水道之上,然后我想要蓝色的水流,AOP就给蓝色的染料,我想要绿色的水流,AOP就给绿色的染料。我不想要黄色的水流,AOP就把黄色的水流截断,不给我。所以这就是切面,我横切在这对你施加一些自定的任务。比如日志、事务、权限等,是对原有逻辑的一种增强。AOP的底层是的动态代理,如果是接口则用JDK动态代理,如果是类用CGLIB实现动态代理。


2022-10-04 12:15:00

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泪梦殇雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值