标签:pre 基于 飞机 上下 这一 方式 超级 轻量级 ext
说起来很惭愧,大学学了3年的java编程,一直都是简单的只知道如何使用某项技术,但是对于他是如何实现的却全然不知,今天看到一个问题:Spring是什么? 我心里一惊,Spring不就是Spring吗,难不成是春天吗?(内心os:我的天,我用了三年,居然不知道该怎么回答)
于是我的百度结果如下:Spring是一个开源框架,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
重新的深入理解Spring之后,我自己进行一下总结吧(有可能不是很准确,欢迎各位大佬指出错误)。
假如工厂a要建一个飞机(plane),建飞机需要安装轮子(wheel),需要机翼(wing)。
在没有spring容器之前的J2EE是这样实现的:
Plane p = new Plane(); //安装三个轮子 Wheel w1 = new Wheel(); Wheel w2 = new Wheel(); Wheel w3 = new Wheel(); p.setW1(w1); p.setW2(w2); p.setW3(w3); //安装两个机翼 Wing wLeft = new Wing(); Wing wRight = new Wing(); p.setWLeft(wLeft); p.setWRight(wRight);
简单来说,这一架飞机需要什么组件,就要手动的找到并去创建组件。这可以说是超高耦合了。(高耦合:简单的来说就是对其他东西的依赖程度很高,牵一发而动全身。举个栗子:轮子要换成升级版的超级轮子,那么三个轮子就全要重新创建WheelPro w1 = new WheelPro()......),而spring通过Java的反射机制实现了依赖注解大大的降低了耦合度(后面的文章会讲到)。
工厂a要提高效率,与工厂b达成协议,直接从工厂b进货零件,通过spring进行开发是这样实现的:
Plane p = new Plane(); p.setW1(b.getBean("Wheel")); p.setW2(b.getBean("Wheel")); p.setW3(b.getBean("Wheel")); ......
从表面上看创建方式没有什么不同,甚至还没有减少代码量,但是却有着很大的区别。简单来说,a工厂需要任何零件时,只需在容器中请求(我需要一个新的轮子了),然后spring容器就会给a工厂自动分配一个来自b工厂的轮子,而a工厂不需要知道轮子是怎么来的。
下面再来看一下spring的含义。
spring是一个容器框架,用来装javabean(java对象),中间层框架(万能胶)可以起一个连接作用,比如说把Struts和hibernate粘合在一起运用。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
spring就是一个开发框架,spring的核心就是spring容器,容器中存放着各种组件,并管理这些框架。当有业务中需要某个对象时,我们不在需要再去new一个新的对象,而是直接从容器中获取即可。
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-bean.xml") B b=ctx.getBean("BBean");
第二个问题是Spring和SpringMVC的关系?
学习过ssh,ssh由spring+strus+hibernate组成。之后又学习了ssm,ssm由spring+springMVC+mybatis组成。(由于之前一直对spring是一个容器框架的理解不够,导致我一直没有搞清楚springMVC和spring的关系)
前面已经讲过spring了,对的,它就是一个容器框架,而springMVC就可以算是放在这个容器中的一个模块了,而springMVC的功能便是管理web的框架,springMVC要实现就必须依赖于spring。
以下几个spring框架的模块可以对spring框架进一步理解。
标签:pre 基于 飞机 上下 这一 方式 超级 轻量级 ext
原文地址:https://www.cnblogs.com/xulei11-/p/11507331.html