Spring的核心概念是IoC,IoC的抽象概念是“依赖关系的转移”
程序不依赖于实现,而是程序与实现都依赖于抽象。
将控制权由实现的一方转移至抽象的一方, 藉由让抽象方拥有控制权,可获得组件的可重用性。
Spring所采用的是依赖注入来实现IoC.
依赖注入的意义是:
保留抽象接口,让组件依赖于抽象接口,当组件要与其他实际的对象发生依赖关系时,
藉由抽象接口来注入依赖的实际对象。
Spring的IoC容器的最大特点是实现了反转控制,也就是说在开发过程中,开发人员不需要关心容器是怎样的,也不需要调用容器的任何API,容器会自动进行被管理对象的初始化以及对象之间依赖关系的维护。
对于IoC容器的理解,最关键的是编程思想的转变。
Spring的IoC容器就是一个通用的Bean工厂,它可以通过各种方式获得Bean对象以
及进行Bean对象的管理。
IoC容器可以管理任何的Java对象
第一个Spring程序:
=============
HelloBean.java
-------------------------------------------------------------------------------------------
public class HelloBean {
public String helloWord;
public String getHelloWord() {
return helloWord;
}
public void setHelloWord(String helloWord) {
this.helloWord = helloWord;
}
}
==============
applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!--定义了一个Bean-->
<bean id="helloBean" class="only.HelloBean">
<property name="helloWord">
<value>Hello!Justin!</value>
</property>
</bean>
</beans>
===============
SpringDemo.java
----------------------------------------------------------------------------------------------
package only;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
public class SpringDemo {
public static void main(String[] args) {
Resource rs=
new FileSystemResource("src/applicationContext.xml"); //可指定绝对或相对路径来指定Bean 定义文件的位置。
BeanFactory factory=new XmlBeanFactory(rs); //创建Bean工厂
HelloBean hello=(HelloBean)factory.getBean("helloBean"); //创建对象
System.out.println(hello.getHelloWord()); //应用Bean对象
}
}
运行输出: