请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于SpringFactory理解上的一点问题

老师您好,关于SpringFactory这个名字我理解上有点想不通的地方,希望您解惑。一开始我不知道这个factory到底是指什么,跟着您的课程看了源码解析后我自己理解的这个factory就是springboot中某一种组件的统称,比如系统初始化器就是这样一种组件,它只是一个名字,而不像工厂模式里那样需要负责这些组件的生产操作(实例化操作)。不知道这样想对不对,因为我想如果要像工厂模式那样的话,应该有一个专门的ContextInitializerFactory来专门负责所有ContextInitializer的实例化操作,但是从源码来看并不是这样的。如果我的理解是对的话,那这里Factory这个名字就是让我不舒服的地方,它明明没有做factory该做的事啊(生产所有的系统初始化器)?请老师指点。

正在回答 回答被采纳积分+3

1回答

源码师 2020-02-16 13:07:07

小伙伴你好,你说的springfactory具体指哪个呢?如果说的是springfactoriesloader那么它是用来加载类的可以认为是起到factory作用。如果你说的是加载中用springfactory.class这个名字代表要被加载的类,那么这个springfactory代表是要被springfactoriesloader加载的类的一个统称。

0 回复 有任何疑惑可以回复我~
  • 提问者 ice_wolf #1
    不好意思老师,我没有写清楚造成您理解上的困难了。我的疑惑在于类似getSpringFactoriesInstances()这样的方法,假设这个这个方法返回的是所有初始化器的实例。在我的理解看来初始化器感觉并不想一个工厂类,但是这里为什么采用getSpringFactoriesInstances这样的方法名呢?还是我对工厂类的理解有问题呢?
    回复 有任何疑惑可以回复我~ 2020-02-16 13:15:43
  • 源码师 回复 提问者 ice_wolf #2
    我觉得是这样的如果不叫这个名字你认为该取什么名字呢?我理解它的意思应该是用springfactoriesloader来达到获取容器中spring.factories文件内所定义类的实现,然后用springfactory.class来统称这些类,看起来更侧重于对这个行为的描述。这个行为像是工厂类加载所以包括工具类啥的都用springfactory名词。当然你的话也有道理,可以换成另一个用词比如说frameworkloader读取frame.work内实现用getfarmeworkinstances方法。但这怎么体现这种工厂加载模式含义呢
    回复 有任何疑惑可以回复我~ 2020-02-16 13:22:40
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信