Spring核心概念(IoC、DI)及入门代码(二)

1. 核心概念

  • IoC(Inversion of Control)控制反转
    • 使用对象时,由主动new产生对象转换为由外部提供提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。
  • Spring技术对IoC思想进行了实现
    • Spring提供了一个容器,称为IoC容器,用来充当IoC思想中的外部
    • IoC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IoC容器中统称为Bean
  • DI(Dependency Injection)依赖注入
    • 在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入。
  • 目标:充分解耦
    • 使用IoC容器管理bean(IoC)
    • 在IoC容器内将所有依赖关系的bean进行关系绑定(DI)
  • 最终效果
    • 使用对象时不仅可以直接从IoC容器中获取,并且获取到的bean已经绑定了所有的依赖关系。

2. IoC入门案例

1)思路分析

  1. 管理什么?——Service与Dao
  2. 如何将被管理的对象告知IoC容器?——配置
  3. 被管理的对象交给IoC容器,如何获取到IoC容器?——接口
  4. IoC容器得到之后,如何从容器中获取bean?——接口方法
  5. 使用Spring导入哪些坐标?——pom.xml

2)代码编写

BookServiceImpl.java

public class BookServiceImpl implements BookService{
	private BookDao bookDao = new BookDaoImpl();
	public void save(){
		System.out.println("book service save...");
		bookDao.save();
	}
}

applicationContext.xml

<!-- 1. 导入Spring的坐标spring-context,对应版本是5.2.10.RELEASE-->
<!-- 2. 配置bean -->
<!-- bean标签标示配置bean  id属性标示给bean起名字  class属性标示给bean定义类型-->
<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
<bean id="bookService" class="com.itheima.Service.impl.BookServiceImpl"/>

main()所在类App.java

// 3. 获取IoC容器:加载配置文件得到上下文对象,即容器对象
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
// 4. 获取bean
BookDao bookDao = (BookDao)ctx.getBean("bookDao");
bookDao.save();

3. DI入门案例

1)思路分析

  1. 基于IoC管理bean
  2. Service中使用new形式创建的Dao对象是否保留?(否)
  3. 那Service中需要的Dao对象如何进入到Service中?(提供方法)
  4. Service与Dao之间的关系如何描述?(配置)

2)代码实现

public class BookServiceImpl implements BookService{
	// 5. 删除业务层中使用new的方式创建的Dao对象
	// private BookDao bookDao = new BookDaoImpl();
	private BookDao bookDao;
	
	// 6. 提供对应的set方法,注入对象。用于给容器执行
	public void setbookDao(BookDao bookDao){
		this.bookDao = bookDao;
	}
	
	public void save(){
		System.out.println("book service save...");
		bookDao.save();
	}
}

applicationContext.xml

<!-- 1. 导入Spring的坐标spring-context,对应版本是5.2.10.RELEASE-->
<!-- 2. 配置bean -->
<!-- bean标签标示配置bean  id属性标示给bean起名字  class属性标示给bean定义类型-->
<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>

<bean id="bookService" class="com.itheima.Service.impl.BookServiceImpl">
	<!-- 7. 配置Service与Dao的关系-->
	<!-- property标签表示配置当前bean的属性
		name属性表示配置哪一个具体的属性
		ref属性表示参照哪一个bean
	-->
	<property name="bookDao" ref="bookDao"/>
</bean>
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值