项目场景:
提示:项目结构
数据层
com/niujl/dao/BookDao.java(接口)
package com.niujl.dao;
public interface BookDao {
void save();
}
com/niujl/dao/impl/BookDaoimpl.java(接口实现)
package com.niujl.dao.impl;
import com.niujl.dao.BookDao;
public class BookDaoimpl implements BookDao {
public void save(){
System.out.println("book dao save ...");
}
}
业务层
com/niujl/service/BookService.java(接口)
package com.niujl.service;
public interface BookService {
void save();
}
com/niujl/service/impl/BookServiceImpl.java(实现接口)
package com.niujl.service.impl;
import com.niujl.dao.BookDao;
import com.niujl.service.BookService;
public class BookServiceImpl implements BookService {
//业务层中不能使用new的方式创建的dao对象,而是applicationContext.xml中配置new对象(spring做的)
private BookDao bookDao;
//提供bookDao对应的set方法(spring容器执行的(applicationContext.xml))
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
public void save(){
System.out.println("book service save ...");
bookDao.save();
}
}
配置文件告诉spring创建哪些实例以及依赖关系
src/main/resources/applicationContext.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">
<!-- 导入的spring的坐标spring-context,对应的版本5.2.10.RELEASE-->
<!-- scope决定spring的bean对象是否为单例模式,默认是单例(singleton)-->
<!-- 配置bean id="bookDao"是bean的属性-->
<bean id="bookDao" name="dao" class="com.niujl.dao.impl.BookDaoimpl" scope="prototype"></bean>
<bean id="bookService" name="service bookEbi" class="com.niujl.service.impl.BookServiceImpl">
<!--配置server 与dao的依赖关系-->
<property name="bookDao" ref="bookDao"/>
</bean>
</beans>
测试类:
com/niujl/APPForScope.java
提示:接口可以接收实例对象,只不过只能用接口内的方法
package com.niujl;
import com.niujl.dao.BookDao;
import com.niujl.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class APPForScope {
public static void main(String[] args) {
// 获取IoC容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
// 获取bean
//获取业务层的类
BookService bookService = (BookService)ctx.getBean("bookService");
//获取数据层的类
BookDao bookDao = (BookDao)ctx.getBean("bookDao");
// System.out.println(bookDao1);
// System.out.println(bookDao2);
//执行方法
bookService.save();
}
}