两个入门案例(IOC和DI)

99 阅读1分钟

IOC入门案例思路分析

管理什么?(Service和Dao)
如何将被管理的对象交给IOC容器?(配置)
被管理的对象交给IOC容器,如何获取到IOC容器?(接口)
获取IOC容器后,如何从容器中获取Bean?(接口方法)
使用Spring导入哪些坐标?(pom.xml)

IOC入门案例

初始代码:(dao和service部分省略)

image.png

更改:

导包

在pom.xml中导入spring-context

配置

新建Spring配置文件applicationContext.xml
加入如下Bean信息:
<bean id="bookDao" class="com.itlxf.dao.impl.BookDaoImpl"/>
<bean id="bookService" class="com.itlxf.service.impl.BookServiceImpl"/>

获取容器

在main方法中输入:

//加载配置文件得到上下文对象,即容器对象
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取资源
BookService bookservice = (BookService)ctx.getBean("BookService");
bookservice.save();

可以发现,程序也输出了和之前一样的结果,但是,IOC好像没有给我们带来什么好处,毕竟在Service代码中依然在使用new来生成BookDao对象。
这时就需要DI登场了。

DI入门案例思路分析

基于IOC管理Bean
Service中new的对象是否需要保留?(否)
需要的Dao对象如何进入Service中?(提供set方法)
Service与Dao之间的关系如何描述?(配置)

配置

<bean id="bookDao" class="com.itlxf.dao.impl.BookDaoImpl"/>
<!--property表示配置当前bean的属性,
name属性表示类中具体的属性名,
ref表示参照哪一个bean(的id),即属性值-->
<bean id="bookService" class="com.itlxf.service.impl.BookServiceImpl">
    <property name="bookDao" ref="bookDao"/>
</bean>