spring注解@scope

@Scope注解的value属性有四个值,分别是singleton、prototype、request、session,value属性的值也可以直接用字符串,不用向我一样获取他们的值。

@Configuration
public class MainConfig2 {

//    @Scope(value = WebApplicationContext.SCOPE_REQUEST)//request
//    @Scope(value = WebApplicationContext.SCOPE_GLOBAL_SESSION)//session
//    @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)//prototype
    @Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)//singleton
    @Bean(name = "person")
    public Person person(){
        Person person = new Person();
        person.setName("lqf");
        person.setEmail("[email protected]");
        return person;
    }

}

singleton:1、默认值,创建的bean是单实例的 ,当使用以下代码从IOC容器中获取bean时,打印的值是true,

                        也就是两个bean的对象其实是同一个。

                  2、单实例bean会在IOC容器被创建时就创建

                  3、springmvc的controller使用单例

        Person person = applicationContext.getBean(Person.class);
        Person person1 = applicationContext.getBean(Person.class);
        System.out.println(person == person1);

 prototype:1、多实例的,每一次获取bean的对象都会重新创建实例,上面代码返回的值就会使false。

                    2、多实例bean不会再IOC容器创建时被创建,在获取bean的时候创建

                    3、struts2的controller使用多实例创建

request:每一次请求创建一个对象

session:每一次回话创建一个对象

request和session是在web容器中使用的,不会用到

猜你喜欢

转载自blog.csdn.net/qq_36722039/article/details/81587604
今日推荐