假设我们要写一个创建用户的功能,以前是要这样写,先写一个接口
public interface IUserService {
public void add();
}
然后写一个实现类,在实现类里面实现add创建用户的方法。
public class UserServiceImpl implements IUserService{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void add() {
System.out.println("创建用户...."+name);
}
}
然后通过new一个对象来调用这个add方法
public void test1() {
//通过接口实现类,调用add方法。
IUserService userService = new UserServiceImpl();
userService.add();
}
现在我们利用spring这个框架来完成以上操作。首先是导入需要的jar包,然后创建一个beans.xml文件。
接下来在spring-framework-3.2.0.RC2-docs/reference/html/xsd-config.html,找到xsd-config.html,打开之后可以找到如下配置beans.xml的文件如下图:
选择第二个,复制粘贴进beans.xml文件就配置好了。接下来把原来我们需要创建的对象userService交个spring容器创建就行。
在beans.xml里写上需要配置的对象,id就是对象命,class是我们写的实现类的所在位置,property中name属性就是对象需要赋值的name,赋值为value="zhangsan"。注意property需要实现类里面有set 、get方法。
接下来,原来我们需要自己创建对象,现在不需要了。直接加载配置文件,从spring容器中获取对象就行了。如下图
public void test1(){
//以前:
//用usersevice方式自己创建对象
// IUserService userService = new UserServiceImpl();
// userService.add();
//现在:
//1.加载beans.xml 这个spring配置文件,然后内部就会创建对象
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
//2.从spring容器获取userService对象
IUserService userService1 = (IUserService)context.getBean("userService");
userService1.add();
}
在使用soring这个过程中,我们通过配置文件让spring拥有了创建userService这个对象的过程就叫IOC:控制反转。简单的说就是创建userService对象控制权被反转到spring框架。
而在配置文件中通过property给对象的name赋值 就是DI :依赖注入。在spring框架负责创建bean对象时,动态的将依赖对象注入到Bean组件。
这样spring就算是小入门了。