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

Mar*_*rco 99 spring annotations

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

Boz*_*zho 111

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

如果类属于服务层您可能需要使用注释它@Service而不是

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

<context:component-scan base-package="com.yourcompany" />
Run Code Online (Sandbox Code Playgroud)

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

  • @Marco如果你没有任何状态(实例变量与spring bean不同),那么就不会出现并发问题. (3认同)

小智 16

默认情况下 - 是.

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