Spring注解开发—— 5、组件注册-@Scope-设置组件作用域

5、组件注册-@Scope-设置组件作用域

IOC容器默认都是单实例的

package com.suirui.springanno.config;

import com.suirui.springanno.entity.Person;
import org.springframework.context.annotation.*;

@Configuration  //告诉Spring这是一个配置类
public class MainConfig2 {

    @Bean("person") //给容器注册一个bean,类型为返回值类型,id默认是方法名,可以通过注解value替换名称
    @Scope("singleton")//默认单例
    public Person person() {
       return  new Person("张三",28);
    }

}
    /**
     * * {@link ConfigurableBeanFactory#SCOPE_SINGLETON SCOPE_SINGLETON}.
     * * @since 4.2
     * * @see ConfigurableBeanFactory#SCOPE_PROTOTYPE
     * * @see ConfigurableBeanFactory#SCOPE_SINGLETON
     * * @see org.springframework.web.context.WebApplicationContext#SCOPE_REQUEST
     * * @see org.springframework.web.context.WebApplicationContext#SCOPE_SESSION
     * * @see #value
     * 

*

* prototype 多实例的 * singleton 单实例的 默认值 * request 同一个请求创建一个实例(WEB环境) * session 同一个session创建一个实例(WEB环境) * * @return */ @Scope("prototype") // 多实例

  • prototype 多实例的 IOC容器启动的时候不会创建Bean,每次获取的时候才会去创建Bean
  • singleton 单实例的 默认值 IOC容器启动就会调用方法创建Bean,以后每次就是直接从容器(map.get)中拿
  • request 同一个请求创建一个实例(WEB环境)
  • session 同一个session创建一个实例(WEB环境)
  • 等同于xml

你可能感兴趣的:(Spring注解开发)