Spring IOC 实现步骤
1、导入 jar 包
2、编写 bean 类、配置文件
public class Hello {
private String name;
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
public void show ( ) {
System. out. println ( name + " say hello!" ) ;
}
}
<?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.xsd" >
< bean name = " hello" class = " com.proudjiang.bean.Hello" >
< property name = " name" value = " 赞赏" />
</ bean>
</ beans>
3、 测试程序
import com. proudjiang. bean. Hello;
import org. springframework. context. ApplicationContext;
import org. springframework. context. support. ClassPathXmlApplicationContext;
public class Test {
public static void main ( String[ ] args) {
ApplicationContext context = new ClassPathXmlApplicationContext ( "beans.xml" ) ;
Hello hello = ( Hello) context. getBean ( "hello" ) ;
hello. show ( ) ;
}
}
4、总结
Hello 对象是由 Spring 容器创建 Hello 对象的属性由 Spring 容器设置
这个过程就叫控制反转
控制的内容: 指谁来控制对象的创建;传统的应用程序对象的创建是由程序本身控制的。使用 Spring 之后,由 Spring 来创建对象。反转: 正转指程序来创建对象,反转指程序本身不去创建对象,而变为被动接收容器创建对象。总结: 以前对象是由程序本身来创建,使用 Spring 后,程序变为被动接收 Spring 创建好的对象。控制反转 – 依赖注入 (Dependency Injection)
Spring IOC 创建对象的方式
1、 通过无参的构造方法创建
public class Hello {
private String name;
public Hello ( ) {
System. out. println ( "无参构造方法" ) ;
}
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
public void show ( ) {
System. out. println ( name + " say hello!" ) ;
}
}
< bean name = " hello" class = " com.proudjiang.bean.Hello" >
< property name = " name" value = " 赞赏" />
</ bean>
2. 通过有参的方法创建
public class User {
private String name;
public User ( String name) {
this . name = name;
}
public void show ( ) {
System. out. println ( name + "say hello!" ) ;
}
}
< bean class = " com.proudjiang.bean.User" >
< constructor-arg index = " 0" value = " james" />
</ bean>
< bean class = " com.proudjiang.bean.User" >
< constructor-arg name = " name" value = " uzi" />
</ bean>
< bean class = " com.proudjiang.bean.User" >
< constructor-arg type = " java.lang.String" value = " kabe" />
</ bean>
3、通过工厂方法创建对象
3.1、静态工厂
public class UserFactory {
public static User newInstance ( String name) {
return new User ( name) ;
}
}
< bean name = " user" class = " com.proudjiang.bean.UserFactory" factory-method = " newInstance" >
< constructor-arg index = " 0" value = " james" />
</ bean>
3.2、动态工厂
public class UserDynamicFactory {
public User newInstance ( String name) {
return new User ( name) ;
}
}
< bean name = " userFactory" class = " com.proudjiang.bean.UserDynamicFactory" />
< bean name = " user" factory-bean = " userFactory" factory-method = " newInstance" >
< constructor-arg index = " 0" value = " james" />
</ bean>