文章目录
SSM 框架(Spring + SpringMVC + Maven + Springboot + MybatisPlus 从入门到精通 ):(第三篇)Spring
Spring
bean
scope属性
接着上一期,我们知道了,bean对对象的管理是采用单例模式的,我们如何修改它的模式呢?这里引入一个 bean 标签的属性 scope
scope:(作用域) prototype 、singleten
当 scope = ”singleten “ 是单例模式,反之亦然
Demo(只需要对 Spring 配置文件做修改)
<?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">
<!-- 1.引入spring坐标-->
<!-- 2.新建spring配置文件-->
<!-- 3.配置beaen -->
<bean id="bookDao1" class="org.example.model.impl.BookDaoimpl" ></bean>
<bean id="bookService" class="org.example.service.impl.BookServiceimpl" name="service" scope="prototype">
<!-- 添加scope = ”prototype“-->
<property name="bookDao" ref="bookDao1"></property>
</bean>
</beans>
然后我们再次运行上次的项目:
result:
这时候发现我们两个对象的地址不一样了,那就对了
bean的实例化方式:
方式一(无参构造函数):
测试方法,我们为我们需要在 bean 的方式下实例化的对象添加有参构造函数,这样我们的无参数构造函数就会失效,这样如果我们的 bean 是使用的无参数构造函数,我们的 demo 就会报错。
为 BookDaoimpl 添加上有参数构造函数:
package org.example.model.impl;
import org.example.model.BookDao;
public class BookDaoimpl implements BookDao {
public BookDaoimpl(int i) {
}
@Override
public void save() {
System.out.println("bookdao save");
}
}
result:
我们可以确定,spring第一种方式就是使用对象自带的无参数构造函数帮我们实例化bean对象
由于篇幅有限,下一篇继续。