设置scope为prototype(多例的意思)
<?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="userDao" class="com.example.demo.dao.Impl.UserDaoImpl" scope="prototype"></bean>
</beans>
运行代码
用IOC获取对象,看看对象是否为同一个
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao1 = (UserDao) app.getBean("userDao");
UserDao userDao2 = (UserDao) app.getBean("userDao");
System.out.println(userDao1);
System.out.println(userDao2);
两个对象明显不是同一个
Dao接口
package com.example.demo.dao;
public interface UserDao {
public void save();
}
Dao接口实现类
package com.example.demo.dao.Impl;
import com.example.demo.dao.UserDao;
public class UserDaoImpl implements UserDao {
@Override
public void save() {
System.out.println("hello");
}
}
设置scope为singleton(单例的意思)
<?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="userDao" class="com.example.demo.dao.Impl.UserDaoImpl" scope="singleton"></bean>
</beans>
代码保持不变,再次运行
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao1 = (UserDao) app.getBean("userDao");
UserDao userDao2 = (UserDao) app.getBean("userDao");
System.out.println(userDao1);
System.out.println(userDao2);
你会发现,创建对象的模式,变成了单例模式。