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]