ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
bean.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 https://www.springframework.org/schema/beans/spring-beans.xsd"> <!--把对象的创建交给spring来管理--> <bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl"></bean> <bean id="accountDao" class="com.itheima.dao.impl.AccountDaoImpl" ></bean> </beans> ~~~ ***** ~~~ package com.itheima.ui; /** * @author: hcf * @qq: 46914685 * @email: 46914685@qq.com */ import com.itheima.dao.IAccountDao; import com.itheima.service.IAccountService; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; /** * 模拟一个表现层,用于调用业务层 * * 单例,多例 */ public class Client { /** * 获取spring的IoC核心容器,并根据id获取对象 * * ApplicationContext的三个常用实现类 * 1.ClassPathXmlApplicationContext 它可以加载类路径下的配置文件,要求配置文件必须在类路径下.如果不在,则加载不了 * 2.FileSystemXmlApplicationContext 可以加载磁盘任意路径下的配置文件(必须有访问权限) * 3.AnnotationConfigApplicationContext 用于读取注解创建容器 * * 核心容器的两个接口引出出的问题 * ApplicationContext: 适用场景:单例对象适用 实际开发中更多采用此方式 * 构建核心容器时,创建对象采取的策略是采用立即加载的方式.也就是说,只要一读取完配置文件马上就创建对象 * * BeanFactory: 适用场景:多例对象使用 * 构建核心容器时,创建对象的策略是采用延迟加载的方式.也就是说,什么时候要用该对象,什么时候才真正创建对象 * * @param args */ public static void main(String[] args) { // //1.获取核心容器对象 ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); //2.根据id获取bean对象,两种创建方式 for (int i = 0; i < 5; i++) { IAccountService as = (IAccountService) ac.getBean("accountService"); System.out.println(as); } IAccountDao adao = ac.getBean("accountDao", IAccountDao.class); System.out.println(adao); //-----------------BeanFactory------------------- // Resource resource = new ClassPathResource("bean.xml"); // BeanFactory factory = new XmlBeanFactory(resource); // IAccountService as = factory.getBean("accountService", IAccountService.class); // System.out.println(as); } } ~~~