ApplicationContext
单例对象适用,【常用此接口来定义容器对象】
- 它在构建核心容器时,创建对象采取的策略是采用立即加载的方式。
- 也就是说,只要一读取完配置文件马上就创建配置文件中配置的对象。
BeanFactory
多例对象适用
- 它在构建核心容器时,创建对象采取的策略是采用延迟加载的方式。
- 也就是说,什么时候根据id获取对象了,什么时候才真正的创建对象。
ApplicationContext演示代码:
public class Client {
public static void main(String[] args) {
// 1.获取核心容器对象
ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); //断点测试
// 2.根据id获取Bean对象
IAccountService as = (IAccountService) ac.getBean("accountService");
System.out.println(as);
}
}
AccountServiceImpl
public class AccountServiceImpl implements IAccountService {
private IAccountDao accountDao = new AccountDaoImpl();
public AccountServiceImpl() {
System.out.println("读取到配置文件,立即创建对象...");
}
@Override
public void saveAccount(){
}
}
结果:
读取到配置文件,立即创建对象...
...
cn.luis.service.impl.AccountServiceImpl@28975c28