spring核心之一,控制反转(IoC)
-
目标类
提供UserService接口和实现类
获得UserService实现类的实例
spring之前,new一个对象
spring之后,IoC控制反转
需要实例对象时,从spring容器中获得,需要将实现类的全限定类名配置到xml中本例中将接口,实现类,测试类,配置xml放在同一个package中
接口:public interface UserService { public void addUser(); }
实现类
public class UserServiceImpl implements UserService { @Override public void addUser() { System.out.println("hello ioc"); } }
-
配置文件
<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 配置需要创建的对象 id 需要从spring容器中获得的实例的命名 class 需要从spring容器中获得的实例的全限定类名--> <bean id="userServiceId" class="com.example.a_springIoC.UserServiceImpl"></bean> </beans>
-
测试类
public class A_springIoCTests { @Test public void demo01() { // 之前写法 UserService userService = new UserServiceImpl(); userService.addUser(); } @SuppressWarnings("resource") @Test public void demo02() { // spring写法 String xmlPath = "/classPath/ApplicationContext.xml"; // 默认位置src下 ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath); UserService userService = (UserService) applicationContext.getBean("userServiceId"); userService.addUser(); } }