应该是刚开始学习的结果,老师第一次使用的是xml进行配置,让我的感觉还更加麻烦。
一、传统的方式
以下是目录结构。
其中的BookService和Bookdao都是接口,里面都只有一个save方法。
下面是BookDaoImpl,也就是dao层的实现类,这里面实现接口的方法,并打印一句话。
下面是BookServiceImpl的内容,它是BookService的实现类,里面不同于上面的内容,不仅自己有打印,还有实现了BookDaoImpl的方法。后面就进行调用。
这是App的内容,这里面就是一个主方法,方法中调用了BookServiceImpl的方法。如果运行,将首先打印“book service Sava。。。”,,然后调用BookDao的方法,打印“book dao Sava。。。”
下面是运行结果
使用ioc容器的方式
使用ioc容器要经历三个步骤
步骤①在pom.xml中导入spring-context的坐标
这里使用的是5.0.0的版本。
代码:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.0.RELEASE</version>
</dependency>
导入完毕之后记得刷新
步骤② 在resources目录中,新建applicationContext.xml文件
2.1 新建文件
2.2 配置bean
配置bean吧,需要记住两个地方,一个是配谁的,那谁有方法就配谁的,那就配实现类的,还有一个就是别名,不重名就是了。
代码
<!--2. 配置bean-->
<bean name="bookDao" class="com.itheima.dao.impl.BookDaoImpl"></bean>
<bean name="bookService" class="com.itheima.service.impl.BookServiceImpl"></bean
2.3 要想拿bean 首先要拿容器
下面是实现的代码
public class App2 {
public static void main(String[] args) {
//要想拿bean 首先要拿容器
//获取ioc容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取bean
// BookDao bookDao = (BookDao) ctx.getBean("bookDao");
// bookDao.save();
BookService bookService = (BookService) ctx.getBean("bookService");
bookService.save();
}
}
现在和之前的App实现方法对比,首先拿ioc容器,名字还是很长的,括号里面要放入需要拿的哪个xml对象。其次是调用这个问题,还是相当于new方法那种,只不过是使用了ctx来创建出这个对象。相比起原始的方法,不仅多了获取容器这一步,而且仍然得经历拿bean这一步。继续学习吧!