1、@Scope
首先,有一点需要说明,在SpringIOC容器中,所有注册的bean(controller,service,dao,....),默认情况下都是单实例的,及singleton;那有哪些作用域,分别什么意思?如下表:
作用域 | 解释说明 |
singleton | 单实例,在创建IOC时,bean就会被创建,而且只会创建一次,以后都会直接使用该创建对象,相当于map.get();注意:在IOC容器创建的时候,就已经创建好了bean; |
prototype | 多实例,在创建IOC时,bean不会被创建,只有当bean的创建方法被调用时,才会创建,而且每次调用,每次创建; |
request | 同一个请求时,创建一次; |
session | 同一个session,创建一次; |
spring提供可以通过@Scope来对bean的作用域进行修改,相当于配置文件中<bean>标签的scope属性,@Scope的取值有singleton,prototype,request以及session,含义如上表;如果不指定,默认为singleton;
做个测试看一下:
测试一,不写@Scope,或者写了@Scope,不指定内容
1、Myconfig
@Configuration
public class MyConfig {
@Bean
@Scope
public Student student(){
System.out.println("创建student开始");
return