【发布时间】:2011-05-06 06:16:47
【问题描述】:
对 Spring 还很陌生,我有一个关于注释类的问题。当使用 @Component 注释一个类时,这是否意味着这个类将是一个 Spring Bean,默认情况下是一个单例?
【问题讨论】:
标签: spring annotations
对 Spring 还很陌生,我有一个关于注释类的问题。当使用 @Component 注释一个类时,这是否意味着这个类将是一个 Spring Bean,默认情况下是一个单例?
【问题讨论】:
标签: spring annotations
是的,没错,@Component 是一个 Spring bean 和一个 Singleton。
如果该类属于服务层,您可能需要使用@Service 对其进行注释
但请记住,为了检测到这些注释,您需要将此行放在applicationContext.xml:
<context:component-scan base-package="com.yourcompany" />
关于单例 - 默认情况下,spring bean 都在单例范围内。您唯一需要记住的是,您不应该将状态存储在字段变量中(它们应该只包含依赖项)。因此,您的应用程序将是线程安全的,并且您不会每次都需要一个新的 bean 实例。换句话说,你的 bean 是无状态的。
【讨论】:
默认情况下 - 是。
但是,您可以使用 @Scope 注释覆盖此行为。例如:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
【讨论】: