跳转至
#java  #spring 
本文阅读量 

Bean的作用域#

singleton 单例模式#

Bean的默认作用域,默认情况下Bean都是单例模式,即无论获取多少次Bean,返回的都是相同的实例,也可以显式地声明这个作用域:

<bean id="user" class="top.longlone.User" c:age="18" c:name="whoami" scope="singleton"/>

prototype 原型模式#

与单例模式对应,每次获取Bean都会创建一个新的实例

<bean id="user" class="top.longlone.User" c:age="18" c:name="whoami" scope="prototype"/>

测试如下:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import top.longlone.Student;
import top.longlone.User;

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        User user = context.getBean("user", User.class);
        User user2 = context.getBean("user", User.class);
        System.out.println(user == user2); // false
    }
}

其他作用域#

剩下的作用域都在Web开发里才能用到

request#

session#

application#

websocket#

总结#

主要了解了Bean的作用域,需要先了解的有单例模式(singleton)和原型模式(prototype),两者的主要区别是获取Bean时使用相同的实例对象还是创建新的实例对象。

回到页面顶部