Spring注解[email protected]、@Lazy
@Scope
@Scope默认是单例模式,即scope=“singleton”。
另外scope还有prototype、request、session、global session作用域。scope="prototype"多例
例:@scope默认是单例模式(singleton)即:@scope(“prototype”)
1.singleton单例模式,
全局有且仅有一个实例
2.prototype原型模式,
每次获取Bean的时候会有一个新的实例
3.request
request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效,
4.session
session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效
5.global session
global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个 portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么web会自动当成session类型来使用。
示例:
singleton: IOC容器启动时调用方法创建对象,放入容器中,以后每次获取直接拿
public class MainConfig {
//给容器中注册一个Bean,类型为返回值的类型,方法名作为id;也可以指定id:@Bean("id")
@Bean
public Person person(){
return new Person("zhangsan", 18);
}
}
@Test
public void test02(){
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(MainConfig.class);
Object person = ac.getBean("person");
Object person2 = ac.getBean("person");
System.out.println(person == person2);//true
}
prototype: IOC容器启动时并不创建,每次获取时调用方法创建对象
public class MainConfig {
//给容器中注册一个Bean,类型为返回值的类型,方法名作为id;也可以指定id:@Bean("id")
@Bean
@Scope("prototype")
public Person person(){
return new Person("zhangsan", 18);
}
}
@Test
public void test02(){
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(MainConfig.class);
Object person = ac.getBean("person");
Object person2 = ac.getBean("person");
System.out.println(person == person2);
}
@Lazy
针对单实例Bean(@Scope为singleton):容器启动不创建对象。第一次使用(获取)Bean时创建对象,并初始化。
//给容器中注册一个Bean,类型为返回值的类型,方法名作为id;也可以指定id:@Bean("id")
@Bean
@Scope("singleton")
@Lazy
public Person person(){
return new Person("zhangsan", 18);
}
上一篇: 有关类初始化的问题2
下一篇: Java中static块执行时机
推荐阅读
-
SpringMVC常用注解[email protected]
-
一分钟学会spring注解之@Lazy注解
-
一分钟学会spring注解之@Lazy注解
-
Spring注解开发—— 5、组件注册[email protected]设置组件作用域
-
Spring注解开发——2、组件注册[email protected]&@Bean给容器中注册组件
-
Spring注解开发——7、组件注册[email protected]按照条件注册bean
-
Spring注解开发——12、生命周期[email protected]指定初始化和销毁方法
-
Spring4.0系列[email protected]
-
Spring注解[email protected]注解
-
spring_注解[email protected][email protected][email protected]_ @Lazy