Spring 如何理解 依赖注入,前提必须有IOC的环境

DI:依赖注入,前提必须有IOC的环境,Spring管理这个类的时候将类的依赖的属性注入(设置)进来。

1、用注解向Spring容器注册bean必须配置<context:component-scan base-package="com.heima"></context:component-scan> 

2、用注解实现bean的依赖注入,需要配置包扫描<context:component-scan base-package="com.heima"></context:component-scan>。如果没有配置报扫描,也可以单独配置 <context:annotation-config></context:annotation-config>

 

两个接口:

IUserService

public interface IUserService {
	public void invokeSave();
}

IUserDao

public interface IUserDao {
	public void save();
}

接口实现类:

/*
 *相当于在application.xml文件配置了
 *<bean id="userDao" class="com.heima.demo1.UserDaoImpl">
 */
@Repository("userDao")
public class UserDaoImpl implements IUserDao {

	@Override
	public void save() {
		System.out.println("执行用户保存方法");
	}
	
	public UserDaoImpl(){
		System.out.println("UserDaoImpl 执行构造方法");
	}

}
@Service("userService")
public class UserServiceImpl implements IUserService {
	
	public UserServiceImpl(){
		System.out.println("UserServiceImpl 构造方法");
	}
	
	
	/*
	 * 依赖注入
	 */
	@Autowired
	@Qualifier("userDao")
	//@Resource(name="userDao")
	private IUserDao userDao;
	
	@Override
	public void invokeSave() {
		System.out.println("UserServiceImpl执行  invokeSave");
		userDao.save();
	}

}

测试类:

public class Demo1 {
	
	@Test
	public void test1(){
		ApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");

		IUserService service = (IUserService) application.getBean("userService");
		
		/*
		 * 如果用该种方式,该service不是由Spring管理的
		 * 在UserServiceImpl用了Spring的依赖注入就无法生效
		 * 会导致 UserServiceImpl 中的 IUserDao为null
		 */
		//IUserService service = new UserServiceImpl();
		service.invokeSave();
	}
	
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值