Spring
Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。
1.容器
提到spring,第一个就是联想到容器。就像苹果公司生产手机,并不是它自己生产,而是委托给其他工厂生产。那么spring里的工厂,就是这个ioc容器了,只是叫法不同。
2.应用上下文(applicationContext维护Bean定义以及对象之间协作关系的高级接口)
上面提到spring的核心是容器,那么怎么告诉容器管理bean?没错!就是应用上下文去告诉。
其实框架提供了许多容器的实现。比如beanFactory,只提供基本的DI(依赖注入)功能;还有一种是继承beanFactory派生下来的applicationContext,它能提供更多企业级的服务,例如解析配置文本信息等;
关于applicationContext配置方法,一种是通过构造器注入(constructor-arg)
还有一种就是通过setter对应的方法注入(property)
例子:constructor-arg
xml配置文件
<bean id="student" class="com.rc.sp.Student">
<constructor-arg name="id" value="1"/>
<constructor-arg name="name" value="student"/>
<constructor-arg name="dream">
<list>
<value>soldier</value>
<value>scientist</value>
<value>pilot</value>
</list>
</constructor-arg>
<constructor-arg name="score">
<map>
<entry key="math" value="90"/>
<entry key="english" value="85"/>
</map>
</constructor-arg>
<constructor-arg name="graduation" value="false"/>
</bean>
property:
xml配置文件
<bean id="teacher" class="com.rc.sp.Teacher">
<property name="id" value="1"></property>
<property name="name" value="teacher"></property>
</bean>
输出结果:
Student [id=1, name=student, dream=[soldier, scientist, pilot],
score={math=90, english=85}, graduation=false]
Teacher [id=1, name=teacher]