Spring中的容器与上下文

从前,山里住着一家橙絮猿,以天为被,以地为席,好不自在。
后来由于发生了不可描述的事,要生孩子了,两口子商量着得建房子。于是孩子他爸开始上山砍树,啊,今天做地基,要这个大小的,明天做墙,要那个大小的,后天做门,大后天做窗…房子建成了,花了10个月,孩子正好出生。
孩子长大了,由于之前的房子就一间,所以又要造房。孩子他爸又上山,这次他发现山里开了个厂子,叫斯博瑞恩容器,厂子很原始,但是老板很慷慨,他说了,厂子有人会去砍木头,你只管要,木棍,椅子我都可以给你生产送货,后来由于不需要亲自砍,房子用了5个月就建好了。
再后来,又发生了不可描述的事,二胎要生了,而且孩子要准备高考,两口子都忙,家里领导地位又高,虽然你很辛苦,但是如果房子建不好,离婚。孩子他爸无奈,上山去了工厂,时过境迁,老板发达了(可能是因为慷慨,员工砍木头积极),厂子里的生产线竟然配备了机器,而且你可以根据你的需求去指导它生产了。这次老板没有强调你只管给清单他出货,因为这些已不足道哉,而是告诉你,现在生产线不光可以生产各种东西,而且支持定制化了,比如椅子背你可以选择用什么样的木头,椅子腿可以要什么样的。你把装配细节写成图纸,装订这些图纸为一个册子,册子给我,要什么我依旧给你送货安装到指定地点。


容器:能创建木头制品(你的pojo),并且在你需要的地方创建给你。它负责创建 装配 销毁(对应到bean的生命周期),比如也有其他人来要椅子,我创建的时候可以用多例,等你不用了,上门回收带回来销毁。
上下文:提供一个让容器作为生产依据的具体图纸。
官网对上下文的定义,指的其实就是指导容器如何装配的元数据.
the Spring IoC container consumes a form of configuration metadata. This configuration metadata represents how you, as an application developer, tell the Spring container to instantiate, configure, and assemble the objects in your application.
这个元数据也就是你给的图纸册,你可以通过这个图纸册去操纵工厂的生产线(其实也就是操纵工厂的生产)。最基本的就是xml文件
Configuration metadata is traditionally supplied in a simple and intuitive XML format
附上spring官网在介绍这里时给出的图:

在这里插入图片描述
附上一段代码,之前在写SpringBoot程序时候,有时候为了快,会直接以这种方式去测DAO写的对不对:
SpringApplication ac = new SpringApplication(Project1Application.class);
System.out.println(“启动成功”);
ApplicationContext c = ac.run(args);
//ConfigurableApplicationContext c = ac.run(args);//这里是两种具体的上下文对象
UserMapper userMapper1=c.getBean(UserMapper.class);
//查询测试get
System.out.println(“下面调用mapper直接交互”);
System.out.println(userMapper1.selectAll());

这就是通过上下文对象加载容器来手动操作容器,容器提供DI,你上面写好了service,用到某个mapper时候,只要写完了注入,在调用的时候,容器会自己将mapper注入到service里的,跟你在这里提出要getBean是一样的。

总结:
看了很多讲关于这块儿知识的,也看了编乎,很多说的有些抽象,你大概理解这块儿知识的话,你能懂那个意思,不过对应到具体的java spring框架里,显然还是直接用java解释更具体些。
度娘上说上下文是对容器的一个拓展,似以为是OK的。容器莫得感情,上下文赋予了其血肉,使其在某个具体的生产环境中具有了实际意义。(工厂在家具图纸指导下生产,它是个家具厂;哪天衙门也过来定制了,给了武器图纸,它就是个兵器厂)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值