第四节 spring IOC 总结

例子一:

 

package com.itheima.a_ioc;

public interface UserService {
	
	public abstract void yuehui();

}
package com.itheima.a_ioc;

public class UserServiceImpl implements UserService {

	@Override
	public void yuehui() {
	System.out.println("ioc first ");
		
	}
}

方式一:

	@Test
	public void demo01(){
		//之前开发 接口=实现类
		UserService userService = new UserServiceImpl();
		userService.yuehui();
}

等价于

<bean id="userServiceId2" class="com.itheima.a_ioc.UserServiceImpl"></bean>    

@Test
	public void demo02(){
		//从spring容器获得  不修改代码,直接配置文件中取出来userServiceId,
		//spring 相当于创建了对象 UserService userService = new UserServiceImpl();
		
		//1 获得容器
		String xmlPath = "com/itheima/a_ioc/beans.xml";
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
		//2获得内容 --不需要自己new,都是从spring容器获得
		UserService userService = (UserService) applicationContext.getBean("userServiceId2");
		userService.yuehui();
		
	}

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

上面都是从UserService 和 UserServiceImpl 解决问题。

下面新写一个UserDao 和UserDaoImpl 

一个新例子。

例二:

package com.itheima.a_ioc;

public interface UserDao {
	
	public void ganhuo();

}
package com.itheima.a_ioc;


public class UserDaoImpl implements UserDao {
/*	下面的代码尤为关键,要理解。*/
	private UserDao userDao;
    public void setUserDao(UserDao userDao) {
			this.userDao = userDao;
		}
		

	@Override
	public void ganhuo() {
	   this.userDao.ganhuo();
		
	}
}
package com.itheima.a_ioc;

public class ZhansanUserDaoImpl implements UserDao {

	public void ganhuo() {
		System.out.println(" zhangsan ganhuo save dao");
	}

}
package com.itheima.a_ioc;

public class LisiUserDaoImpl implements UserDao {

	@Override
	public void ganhuo() {
		System.out.println(" Li si ganhuo save dao");
	}

}
<bean id="userDaoId3" class="com.itheima.a_ioc.ZhansanUserDaoImpl"></bean>
<bean id="userDaoId4" class="com.itheima.a_ioc.UserDaoImpl">
		<property name="userDao" ref="userDaoId"></property>
	</bean>
	

	<bean id="userDaoId" class="com.itheima.a_ioc.ZhansanUserDaoImpl"></bean>

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------大总结:把Dao 注入到service里面。

然后test类里面userservice.yuehui(); 而不是 userdao.ganhuo(); 了

主要改写部分是:

package com.itheima.a_ioc;

public class UserServiceImpl implements UserService {
	
	private UserDao userDao;
    public void setUserDao(UserDao userDao) {
			this.userDao = userDao;
		}
		

	@Override
	public void yuehui() {
	this.userDao.ganhuo();
		
	}
}




bean 改写成为:

<bean id="userServiceId5" class="com.itheima.a_ioc.UserServiceImpl">
		<property name="userDao" ref="userDaoId2"></property>
	</bean>
	

	<bean id="userDaoId2" class="com.itheima.a_ioc.ZhansanUserDaoImpl"></bean>

OK,搞定。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值