视频链接
依赖注入
- 基于IOC管理bean
- Service中的new形式不能保留
- Service中的dao对象怎么进入到Serice中
- 如何描述(绑定)
-
案例完整解析
-
项目结构
-
创建maven空项目
-
导入依赖包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>spring02DI</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
- 实现Dao层
接口:
package main.ljh.dao;
public interface BookDao {
public void save();
}
实现类:
package main.ljh.dao.impl;
import main.ljh.dao.BookDao;
public class BookDaoImpl implements BookDao {
public void save() {
System.out.println("Dao层数据处理....");
}
}
- 实现Service层
接口:
package main.ljh.service;
public interface BookService {
public void save();
}
实现类:
package main.ljh.service.impl;
import main.ljh.dao.BookDao;
import main.ljh.service.BookService;
public class BookSweviceImpl implements BookService {
//此处不用再服务层中再new一个dao了
private BookDao bookDao;
public void save() {
System.out.println("服务层运行中");
bookDao.save();
}
//让IOC在此处设置一个dao实现类弄在接口上
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
}
- 在xml中绑定
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="bookDao" class="main.ljh.dao.impl.BookDaoImpl"></bean>
<bean id="bookService" class="main.ljh.service.impl.BookSweviceImpl">
<property name="bookDao" ref="bookDao"></property>
</bean>
</beans>
注: bean:IOC容器根据实现类创建对象
property name就是DI用于绑定Service中创建的接口指针的名字,即private bookDao
ref代表绑定在哪个bean中
- main中测试
package main.ljh;
import main.ljh.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class app {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//ApplicationContext接口new一个实现类,装载xml配置
BookService bookService = (BookService) ctx.getBean("bookService");
//得到对象
bookService.save();
}
}
- 运行结果
总结:完整的一次数据层和服务层的简单交互,体会IOC容器以及DI的绑定机制,注意在服务层中要set方法,以及各项字符的意义,还有对应关系。