使用@Component注释类时,这是否意味着它是一个Spring Bean和Singleton?

时间:2011-05-06 06:16:47

标签: spring annotations

对Spring来说相当新,我有一个关于注释类的问题。使用@Component注释类时,这是否意味着此类将是一个Spring Bean,默认情况下是一个单例?

2 个答案:

答案 0 :(得分:99)

是的,这是正确的,@Component是一个Spring bean和一个Singleton。

如果该类属于服务层,您可能需要使用@Service进行注释

但请记住,为了检测这些注释,您需要将此行放在applicationContext.xml中:

<context:component-scan base-package="com.yourcompany" />

关于单身人士 - 默认情况下,春天豆子都是单身范围。您唯一需要记住的是,您不应该将状态存储在字段变量中(它们应该只保存依赖项)。因此,您的应用程序将是线程安全的,并且每次都不需要bean的新实例。换句话说,你的bean是无状态的。

答案 1 :(得分:10)

默认情况下 - 是。

但是,您可以使用@Scope注释覆盖此行为。例如:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)