bean的作用域

在spring里面,默认情况下,bean是一个单实例对象

package com.test2;

public class TestA {
    private String name;

    public void setName(String name) {
        this.name = name;
    }
}
<?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="testA" class="com.test2.TestA">
        <property name="name" value="名字"/>
    </bean>
</beans>
package com.test2;


import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestATest {
    @Test
    public void test(){
        ApplicationContext context = new ClassPathXmlApplicationContext("spring7.xml");
        TestA testA = context.getBean("testA", TestA.class);
        System.out.println(testA);
        TestA testb = context.getBean("testA", TestA.class);
        System.out.println(testb);
    }
}

com.test2.TestA@43a0cee9

com.test2.TestA@43a0cee9

在spring里面,设置创建bean实例是单例还是多例

在spring配置文件bean标签里面有属性(scope)用于设置单实例还是多实例

scope属性常用值

singleton,默认值,单例的

prototype,多例的

补充两个不是很常用的值

request 一次请求

session 一次会话

<?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="testA" class="com.test2.TestA" scope="prototype">
        <property name="name" value="名字"/>
    </bean>
</beans>
package com.test2;


import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestATest {
    @Test
    public void test(){
        ApplicationContext context = new ClassPathXmlApplicationContext("spring7.xml");
        TestA testA = context.getBean("testA", TestA.class);
        System.out.println(testA);
        TestA testb = context.getBean("testA", TestA.class);
        System.out.println(testb);
    }
}

com.test2.TestA@544a2ea6

com.test2.TestA@2e3fc542

singleton和prototype的区别

singleton单实例,prototype多实例

设置scope值为singleton时,加载spring配置文件的时候就会创建单例对象

设置scope的值为prototype时,它并不是在加载spring配置文件的时候创建对象,而是在调用getBean方法的时候创建多例对象

全部评论

相关推荐

点赞 评论 收藏
分享
码农索隆:想看offer细节
点赞 评论 收藏
分享
弦五Strings:他之所以会举报你代课是因为在这种人眼里正常上课就是正义代课就是邪恶,典型二极管思维,处理方法就是私下沟通,你就说你自己家里经济困难或者家里父母生病什么之类的,需要去打工挣钱,用尽孝的正义对冲他认为的上课的正义,他可能就妥协了。
我的实习日记
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务