IoC及DI的的筆記
在JAVA中用new來建立新物件。
Cat cat=new Cat();
cat.play();
Dog dog=new Dog();
dog.play();
若用spring 改寫變成
BeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource("D://applicationContext.xml"));
Cat cat =(Cat)beanFactory.bean("Cat");
Dog dog =(Dog)beanFactory.bean("Dog");
new Cat()及new Dog()就變成在xml中宣告
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="Cat" class="cource.xxx.Cat" />
<bean id="Dog" class="cource.xxx.Dog" />
</beans>
有點像是所有的宣告,都在設定檔中完成,java檔就是專心寫商業邏輯。
但程式是似乎沒有變的更簡單,還要轉一圈去設定,是不是比較麻煩呀!!
但在java頁面中有時要做很多設定的類別一多起來,那java的頁面就變的比較複雜。
Cat cat=new Cat();
cat.setShoe("愛迪達");
cat.setClothes("館長牌");
cat.setWeight("78");
....
但若這些宣告放在xml中,.java檔就會變的比較乾淨。
那你會不會說,那xml還是要設定呀,這樣沒有比較省工。還是要花費相同的力氣。
但如果多個地方都要用該類別,那設定在xml就只要設定一次,.java檔就不用每一次要宣告一次,每一頁都做一堆設定。
就好像是JDBC的設定,將資料來設定在Spring中,在java頁面中就不用每一頁都要設定。就省下很多時間。
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver" />
<property name="url" value="jdbc:derby://localhost:1527/myDB" />
<property name="username" value="root" />
<property name="password" value="sa" />
</bean>
而DI及IOC就可以讓你只要設定在xml,之後就不用在java檔中一直設定,只要接受該物件注入即可 。
另外,如果你在程式中要替換某個class,把它更新到更好的版本。那在過去要每個文件檢查是否有使用該class,而在spring中,只要到xml去替換就行了。
註:後來也開發了只設定定在java檔中的設定。一般都稱為config。