先从这个项目里改:https://blog.youkuaiyun.com/GLOAL_COOK/article/details/112424735
配置文件:
改applicationContext.xml文件,再在test测试
1.singleton
<bean id="userDao" class="cn.itcast.dao.impl.UserDaoImpl"></bean>
不写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">
<!--这里的id是你随便起的,后面你getbean对应就行,然后class是写你要获取对象的全类名-->
<bean id="userDao" class="cn.itcast.dao.impl.UserDaoImpl" scope="singleton"></bean>
</beans>
测试:
singleton的话对象只创建一次而已

2.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">
<!--这里的id是你随便起的,后面你getbean对应就行,然后class是写你要获取对象的全类名-->
<bean id="userDao" class="cn.itcast.dao.impl.UserDaoImpl" scope="prototype"></bean>
</beans>
把scope改为prototype,再运行test1结果:

prototype会创建多个对象的
上面把UserDaoImpl方法改下,我们测singleton和prototype的生命周期,修改它的无参构造方法:
package cn.itcast.dao.impl;
import cn.itcast.dao.UserDao;
/**
* @author QLBF
* @version 1.0
* @date 2021/1/10 12:11
*/
public class UserDaoImpl implements UserDao {
public UserDaoImpl() {
System.out.println("UserDaoImpl被创建了");
}
public void save() {
System.out.println("sping....coming!");
}
}
总结:

3. Bean实例化三种方式

3.1无参(重点掌握无参就行):
使用无参构造方法实例化 它会根据默认无参构造方法来创建类对象,如果bean中没有默认无参构造函数,将会创建失败
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>
3.2 工厂静态方法实例化
工厂的静态方法返回Bean实例:
新建一个StaticFactoryBean类(可改名),再在applicationcontext.xml改为这样:

3.3工厂实例方法实例化
工厂的非静态方法返回Bean实例
新建一个DynamicFactoryBean类(可改名),再在applicationcontext.xml改为这样:

本文介绍了Spring配置文件中bean的singleton和prototype两种作用域,详细阐述了它们的实例化过程。对于singleton,bean默认为单例模式,只会创建一个对象;而对于prototype,每次请求都会创建新的对象。此外,文章还详细讲解了Bean的三种实例化方式:1) 无参构造方法实例化,依赖于默认无参构造函数;2) 工厂静态方法实例化,通过静态方法返回Bean实例;3) 工厂实例方法实例化,利用非静态方法创建Bean对象。
1299

被折叠的 条评论
为什么被折叠?



