2、IOC入门
2.1、何为IOC
所谓IOC(Inversion of Control)通俗来讲就是控制反转,和普通的方式对比来讲就是,传统方式我们如果要使用一个接口中的方法,我们先要手动去实例化接口的实现类来获取一个实例,然后通过实例来调用它的方法。
IOC的方式:在我们需要实例对象时,我们不是自己去实例化这个对象,而是将实现类的全限定名称配置到xml文件中,然后从spring工厂(容器)中去获得这个实例。这样的话我们的代码中就不需要实例化这个实现类,很好的做到了解耦,下面可以对比一下传统方式和IOC方式的不同之处
下面将代码和配置文件贴出来
public interface UserService {
void addDate();
}
public class UserServiceImpl implements UserService {
@Override
public void addUser() {
System.out.println("a_ico add user");
}
}
public class TestBean {
/**
* 传统方式:我们需要在代码中new UserService的实现类,耦合度很高
*/
@Test
public void test1(){
UserService userService = new UserServiceImpl();
userService.addDate();
}
/**
* spring IOC方式:我们不需要在代码中new UserService的实现类,只要去spring工厂中去拿想要的实例即可
*/
@Test
public void test2(){
String xmlPath = "day01/beans.xml";
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
UserService userService = (UserService) applicationContext.getBean("userServiceId");
userService.addDate();
}
}
<!--下面是xml文件的配置-->
<bean id="userServiceId" class="spring.day01_IOC_DI.test01.UserServiceImpl" ></bean>
通过上面的例子,应该可以大概可以成功的通过IOC的方式完成了一次bean的获取以及方法的调用,是不是瞬间就有了信心,感觉一定可以学会它。
2.2 配置文件
针对配置文件,需要做几点说明:
位置:任意,开发中一般在classpath下(src)
– 如果使用idea工具,直接放到resources路径下或者再resources路径下新建文件夹存放都可以,只要后面获取的时候能正确指定到对应路径就可以
名称:任意,开发中常用applicationContext.xml
内容:我们可以添加schema约束(当然,也可以不添加,如果不添加那么xml中语法写错了不会有提示,也不会有书写的内容提示),下面是一个例子