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

作为 Spring 的新手,我有一个关于注释类的问题。当用 @Component注释一个类时,这是否意味着这个类将是一个 Spring Bean,默认情况下是一个单例模式?

104726 次浏览

是的,没错,@Component是一个 Spring bean 和一个 Singleton。

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

但是要记住,为了检测到这些注释,您需要在 applicationContext.xml中放置这一行:

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

关于单例——在默认情况下,Spring bean 都在单例范围内。您必须记住的唯一一件事是不应该将 state 存储在字段变量中(它们应该只保存依赖项)。因此,您的应用程序将是线程安全的,并且您不会每次都需要一个 bean 的新实例。换句话说,您的 bean 是无状态的。

默认情况下-是的。

但是,您可以使用 @Scope注释覆盖此行为