Spring的ioc介紹,配置檔案和基本使用
阿新 • • 發佈:2018-12-13
1. 什麼是spring,它能夠做什麼?
Spring是一個開源框架,它由Rod Johnson建立。它是為了解決企業應用開發的複雜性而建立的。
Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。
然而,Spring的用途不僅限於伺服器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用都可以從Spring中受益。
目的:解決企業應用開發的複雜性
功能:使用基本的JavaBean代替EJB,並提供了更多的企業應用功能
範圍:任何Java應用
簡單來說,Spring是一個輕量級的控制反轉(IoC)和麵向切面(AOP)的容器框架。
1.1 中間層框架、萬能膠
struts2
spring
hibernate
1.2 容器框架
JavaBean 專案中的一個個類
IOC和AOP
2. 什麼是控制反轉(或依賴注入)
控制反轉(IoC=Inversion of Control)IoC,
用白話來講,就是由容器控制程式之間的(依賴)關係,而非傳統實現中,由程式程式碼直接操控。這也就是所謂“控制反轉”的概念所在:(依賴)控制權由應用程式碼中轉到了外部容器,控制權的轉移,是所謂反轉。
IoC還有一個另外的名字:“依賴注入 (DI=Dependency Injection)” ,即由容器動態的將某種依賴關係注入到元件之中
案例:實現Spring的IoC
IOC/DI
將以前由程式設計師例項化物件/賦值的工作交給了spring處理
3. 如何在spring當中定義和配置一個JavaBean(使用無參構造方法+set方法建立一個JavaBean)
配置檔案詳解
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" default-autowire="byType"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--ioc的用途-->
<!--<bean class="com.hw.one.dao.impl.TempDaoImpl1" id="t1"></bean>-->
<bean class="com.hw.one.dao.impl.TempDaoImpl2" id="t2"></bean>
<bean class="com.hw.one.action.TempAction" id="TempAction">
<!--前面的name代表com.hw.one.action.TempAction 的屬性,ref為依賴的類,就是上方id=t1-->
<property name="tempDao" ref="t2"></property>
</bean>
<!--ioc注入的型別和方式-->
<bean class="com.hw.one.action.StudentAction" id="studentAction">
<!--set方法注入-->
<property name="sid" value="123"></property>
<property name="sname" value="蓋倫"></property>
<!--集合-->
<property name="list">
<list>
<value>吃</value>
<value>喝</value>
<value>玩</value>
<value>樂</value>
</list>
</property>
<!--構造器注入-->
<constructor-arg name="sid" value="123"></constructor-arg>
<constructor-arg name="sname" value="蓋倫"></constructor-arg>
<!--<property name="list">-->
<!--<list>-->
<!--<value>吃</value>-->
<!--<value>喝</value>-->
<!--<value>玩</value>-->
<!--<value>樂</value>-->
<!--</list>-->
<!--</property>-->
</bean>
<!--自動裝配(上方加上default-autowire="byType")-->
<!--bytype 根據管理的javabean的介面屬性在spring的上下文中自動實現類去注入,
當一個介面有一個以上的實現類的時候會報錯,和spring的id無關,所以上方的
<bean class="com.hw.one.dao.impl.TempDaoImpl1" id="t1"></bean>
<bean class="com.hw.one.dao.impl.TempDaoImpl2" id="t2"></bean>
這兩個需要註釋其中一個,不然就不能使用自動裝配
byname:根據管理的javabean中的介面名,去spring中的上下文中的id去尋找進行注入
-->
<bean class="com.hw.one.dao.impl.TempDaoImpl21" id="t21"></bean>
<bean class="com.hw.one.action.TempAction" id="TempAction2">
<!--<property name="tempDao" ref="t1"></property>-->
<!--<property name="tempDao2" ref="t21"></property>-->
</bean>
</beans>