//java代码
@org.junit.Test
public void TestGate(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//当在UserDao有两个实现类对象时,既要指定名称 又要指定实现类
//在scope="prototype" 模式下获取的userDao1 userDao3不是相同的
//在scope="singleton" 模式下获取的userDao1 userDao3才是相同的
Object userDao1 = applicationContext.getBean("userDao1", UserDao.class);
System.out.println(userDao1);
Object userDao3= applicationContext.getBean("userDao1", UserDao.class);
System.out.println(userDao3);
Object userDao2 = applicationContext.getBean("userDao2", UserDao.class);
//System.out.println(userDao2);
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<!--一个接口 多个实现类-->
<bean id="userDao1" class="com.itheima.dao.Impl.UserDaoImpl" scope="prototype"></bean>
<bean id="userDao2" class="com.itheima.dao.Impl.UserDaoImpl" ></bean>
</beans>
//在scope="prototype" 模式下在获取时才创建对象 创建的对象如果长时间不使用,会自动销毁
//在scope="singleton" 模式在创建容器对象时 ---同时创建对象 默认模式