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/beanshttp://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。