项目结构:
提示:这里简述项目相关背景:
数据层
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/factory/BookDaoFactoryBean.java(工厂类,spring来读)
package com.niujl.factory;
import com.niujl.dao.BookDao;
import com.niujl.dao.impl.BookDaoImpl;
import org.springframework.beans.factory.FactoryBean;
/**
* 需要实现spring的bean接口:FactoryBean
* 覆写getObject()来创建对象实例(变成spring来创建)
* 覆写getObjectType()来返回对象的类型
*/
public class BookDaoFactoryBean implements FactoryBean {
@Override
public Object getObject() throws Exception {
return new BookDaoImpl();
}
@Override
public Class<?> getObjectType() {
return BookDao.class;
}
}
配置文件:
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">
<bean id="bookDao" class="com.niujl.factory.BookDaoFactoryBean"/>
</beans>
测试类
package com.niujl;
import com.niujl.dao.BookDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class APP {
public static void main(String[] args) {
//获取Ioc容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取bean(通过工厂模式)
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
bookDao.save();
}
}