在默认情况下,Spring应用上下文中所有的bean都是作为单例(singleton)的形式创建的。也就是说,不管给定的一个bean被注入到其他bean多少次,每次所注入的都是同一个实例。
spring定义了多种作用域,可以基于这些作用域来创建bean,包括:
1.单例(Singlrton):在整个应用中,只创建bean的一个实例。
2.原型(Prototype):每次注入或者通过spring应用上下文获取的时候,都会创建一个新的bean实例。
3.会话(Session):在Web应用中,为每个会话创建一个bean实例。
4.请求(Request):在Web应用中,为每个请求创建一个bean实例。
单例是默认的作用域,但是对于易变的类型,这并不合适。如果想选择其他的作用域,那么需要使用一个注解,@Scope,他可以和@Component或@Bean一起使用。
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class Notepad{...}