初始化环境: pom文件导入依赖
<dependencies>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
创建业务层接口和实现类
public interface AccountService {
void saveAccount();
}
public class AccountServiceImpl implements AccountService {
private AccountDao accountDao = (AccountDao)BeanFactory.getBean("AccountDao");
@Override
public void saveAccount() {
accountDao.saveAccount();
}
}
创建持久层接口和实现类
public interface AccountDao {
void saveAccount();
}
public class AccountDaoImpl implements AccountDao {
@Override
public void saveAccount() {
System.out.println("保存了账户");
}
}
配置文件 beans.xml
<?xml version="1.0" encoding="utf-8" ?>
<beans>
<bean id="AccountDao" class="com.itheima.dao.impl.AccountDaoImpl"></bean>
<bean id="AccountService" class="com.itheima.service.impl.AccountServiceImpl"></bean>
</beans>
工具类
public class BeanFactory {
private static Map<String, Object> map = new HashMap<>();
static {
try {
SAXReader saxReader = new SAXReader();
InputStream inputStream = BeanFactory.class.getClassLoader().getResourceAsStream("beans.xml");
Document document = saxReader.read(inputStream);
Element beans = document.getRootElement();
List<Element> beanList = beans.elements();
for (Element bean : beanList) {
String idValue = bean.attributeValue("id");
String classValue = bean.attributeValue("class");
Object obj = Class.forName(classValue).newInstance();
map.put(idValue, obj);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static Object getBean(String id){
Object obj = map.get(id);
return obj;
}
}
测试
public class AccountServiceTest {
@Test
public void saveAccount() {
AccountService accountService = (AccountService) BeanFactory.getBean("AccountService");
accountService.saveAccount();
}
}