Spring反转控制与依赖注入
来源:互联网 发布:数字规律分析软件 编辑:程序博客网 时间:2024/05/17 06:17
Spring反转控制IOC(inversion of control)就是由容器来控制程序之间的关系,这并不是在Spring中所特有的概念,在Spring中具体的表现就是将我们的类写进配置文件中,有Spring容器来进行控制,当程序需要时就由容器来来自动调用。依赖注入是就初始化Class A时要先初始化Class B那么Class A就要依赖Class B,这个过程由Spring容器来完成,这就是所谓的依赖注入。
我们来看一个小例子。
在这之前需要将spring.jar加入到classpath中。
HelloIOC.java;
package com.testspring.basic.ioc;
public class HelloIOC {
private String helloIOC = "helloIOC!";
public void setHelloIOC(String helloIOC) {
this.helloIOC = helloIOC;
}
public String getHelloIOC() {
return helloIOC;
}
}
MyIOC .java
package com.testspring.basic.ioc;
public class MyIOC {
HelloIOC helloIOC;
public MyIOC(HelloIOC helloIOC){
this.helloIOC = helloIOC;
}
public static MyIOC createInstance(HelloIOC helloIOC){
return new MyIOC(helloIOC);
}
public void thisMethod(){
System.out.println(helloIOC.getHelloIOC());
}
public void init(){
System.out.println("初始化方法");
}
}
bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 反转控制和依赖注入的基本测试 -->
<bean id="HelloIOC" class="com.testspring.basic.ioc.HelloIOC" singleton="false">
<property name="helloIOC">
<value>helloIOC</value>
</property>
</bean>
<bean id="MyIOC" class="com.testspring.basic.ioc.MyIOC" init-method="init" factory-method="createInstance">
<constructor-arg><ref bean="HelloIOC"/></constructor-arg>
</bean>
</beans>
将bean.xml配置文件放到跟目录下
测试文江Test.java
import com.testspring.basic.ioc.*;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class Test{
public static void main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
MyIOC myIOC = (MyIOC)context.getBean("MyIOC");
myIOC.thisMethod();
}
}
这样就完成了一个简单Spring入门程序。
需要注意的是singleton属性,当singleton=true时,每次需要被描述的Bean时就由Spring容器来实例出一个,当当singleton=false时,被描述的Bean只被实例化一次,也就是说,容器中只存在一个该Bean的实例.
我们来看一个小例子。
在这之前需要将spring.jar加入到classpath中。
HelloIOC.java;
package com.testspring.basic.ioc;
public class HelloIOC {
private String helloIOC = "helloIOC!";
public void setHelloIOC(String helloIOC) {
this.helloIOC = helloIOC;
}
public String getHelloIOC() {
return helloIOC;
}
}
MyIOC .java
package com.testspring.basic.ioc;
public class MyIOC {
HelloIOC helloIOC;
public MyIOC(HelloIOC helloIOC){
this.helloIOC = helloIOC;
}
public static MyIOC createInstance(HelloIOC helloIOC){
return new MyIOC(helloIOC);
}
public void thisMethod(){
System.out.println(helloIOC.getHelloIOC());
}
public void init(){
System.out.println("初始化方法");
}
}
bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 反转控制和依赖注入的基本测试 -->
<bean id="HelloIOC" class="com.testspring.basic.ioc.HelloIOC" singleton="false">
<property name="helloIOC">
<value>helloIOC</value>
</property>
</bean>
<bean id="MyIOC" class="com.testspring.basic.ioc.MyIOC" init-method="init" factory-method="createInstance">
<constructor-arg><ref bean="HelloIOC"/></constructor-arg>
</bean>
</beans>
将bean.xml配置文件放到跟目录下
测试文江Test.java
import com.testspring.basic.ioc.*;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class Test{
public static void main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
MyIOC myIOC = (MyIOC)context.getBean("MyIOC");
myIOC.thisMethod();
}
}
这样就完成了一个简单Spring入门程序。
需要注意的是singleton属性,当singleton=true时,每次需要被描述的Bean时就由Spring容器来实例出一个,当当singleton=false时,被描述的Bean只被实例化一次,也就是说,容器中只存在一个该Bean的实例.
- Spring反转控制与依赖注入
- spring中的控制反转与依赖注入
- spring控制反转与依赖注入
- Spring的控制反转与依赖注入
- Spring的控制反转与依赖注入
- spring 控制反转与依赖注入原理
- Spring依赖注入与控制反转
- Spring控制反转与依赖注入
- spring实现控制反转与依赖注入
- spring框架依赖注入与控制反转
- spring 控制反转与依赖注入原理
- Spring依赖注入与控制反转理解
- Spring控制反转/依赖注入
- Spring控制反转/依赖注入
- Spring控制反转/依赖注入
- Spring控制反转+依赖注入
- Spring控制反转+依赖注入
- Spring依赖注入/控制反转
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- C#枚举系统安装的所有打印机
- C#编写的生成缩略图程序
- 进度条控件
- 什么时候应该使用Web Service
- Spring反转控制与依赖注入
- JS的正则表达式
- 【转载】几种常见的素数判断算法
- .NET Framework 环境
- 滚动代码详细说明
- Class1/Class 1.0与Class2/Class 2.0有什么不同?
- 滚动代码Marquee特效
- 传真协议区别小记
- 内嵌式RealPlayer播放器的参数含义