提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
业务层
BookService.java
public interface BookService {
void save();
}
BookServiceImpl.java
public class BookServiceImpl implements BookService {
private BookDao bookDao;
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
@Override
public void save() {
bookDao.save();
}
}
数据访问层
BookDao.java
public interface BookDao {
void save();
}
BookDaoImpl.java
public class BookDaoImpl implements BookDao{
private BookDao bookDao;
public BookDaoImpl(){
System.out.println("构造方法 ...");
}
@Override
public void save() {
System.out.println("bookDao method...");
}
}
静态工厂
public class BookDaoFactory {
//静态工厂创建对象
public static BookDao getBookDao(){
System.out.println("调用了静态工厂");
return new BookDaoImpl();
}
}
实例工厂
public class BookDaoFactory2 {
//实例工厂创建对象
public BookDao getBookDao2(){
System.out.println("调用实例工厂");
return new BookDaoImpl();
}
}
一、无参数构造方法
<?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">
<!-- 1.创建bean对象方式1:默认调用类的无参构造函数的创建(Ioc创建并存储在容器中) -->
<bean class="com.hntou.dao.impl.BookDaoImpl" id="bookDao"></bean>
</beans>
通过Ioc调用类的无参构造函数创建bean对象并存储到容器中
二、静态工厂
<?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">
<!-- 2.创建bean对象方式2:调用静态工厂创建bean对象加入Ioc容器 -->
<bean class="com.hntou.factory.BookDaoFactory" id="bookDao2" factory-method="getBookDao"></bean>
</beans>
通过静态工厂创建bean对象并且加入到Ioc容器中
三、实例工厂
<?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">
<!-- 3.创建bean对象方式3:调用实例工厂创建工厂对象再创建bean对象加入Ioc容器 -->
<!--3.1 实例工厂对象 -->
<bean class="com.hntou.factory.BookDaoFactory2" id="bookDaoFactory2"></bean>
<!--3.2 调用实例工厂对象创建对象加入Ioc容器 -->
<bean factory-bean="bookDaoFactory2" factory-method="getBookDao2" id="bookDao3"></bean>
</beans>
通过Ioc创建实例工厂对象再通过实例工厂加入到Ioc容器中
BookServiceTest.java测试类
public class BookServiceTest {
//一般其他框架整合Spring需要通过其他工厂调用
@Test
public void test(){
/1.根据配置文件 applicationContext.xml 创建Ioc容器对象 ClassPathXMLApplicationContext
//1.1 会先创建Ioc容器对象
//1.2 自动解析类路径下的applicationContext.xml 里面的数据
//1.3 根据<bean> 配置对象加入Ioc容器中存储
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
2.获取实现类对象
BookDao bookDao =(BookDao) context.getBean("bookDao");
BookDao bookDao2 =(BookDao) context.getBean("bookDao2");
BookDao bookDao3 =(BookDao) context.getBean("bookDao3");
//3.调用对象方法
bookDao.save();
//4.关闭容器
context.close();
}
}
一般其他框架整合Spring需要通过其他工厂调用,最常使用的还是Ioc默认创建bean对象