作为Spring的新手,我有一个关于注解类的问题。当用@Component注解一个类时,这是否意味着这个类将是一个SpringBean,默认情况下是一个单例?
@Component
epfja78i1#
是的,这是正确的,@Component是一个Spring bean和一个Singleton。如果类属于服务图层,则可能需要使用@Service对其进行注解但是请记住,为了检测这些注解,您需要在applicationContext.xml中放置这一行:
@Service
applicationContext.xml
<context:component-scan base-package="com.yourcompany" />
关于单例-默认情况下,Spring Bean都在单例范围内。您必须记住的唯一一件事是,您不应该将状态存储在字段变量中(它们应该只保存依赖项)。因此,您的应用程序将是线程安全的,并且每次都不需要一个新的bean示例。换句话说,您的bean是无状态的。
kyks70gy2#
默认-是。但是,您可以使用@Scope注解覆盖此行为。例如:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Scope
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
2条答案
按热度按时间epfja78i1#
是的,这是正确的,
@Component
是一个Spring bean和一个Singleton。如果类属于服务图层,则可能需要使用
@Service
对其进行注解但是请记住,为了检测这些注解,您需要在
applicationContext.xml
中放置这一行:关于单例-默认情况下,Spring Bean都在单例范围内。您必须记住的唯一一件事是,您不应该将状态存储在字段变量中(它们应该只保存依赖项)。因此,您的应用程序将是线程安全的,并且每次都不需要一个新的bean示例。换句话说,您的bean是无状态的。
kyks70gy2#
默认-是。
但是,您可以使用
@Scope
注解覆盖此行为。例如:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)