Sendo relativamente novo no Spring, tenho uma pergunta sobre como fazer anotações em uma aula. Ao anotar uma classe com @Component
isso significa que essa classe será um Spring Bean e, por padrão, um singleton?
fonte
Sendo relativamente novo no Spring, tenho uma pergunta sobre como fazer anotações em uma aula. Ao anotar uma classe com @Component
isso significa que essa classe será um Spring Bean e, por padrão, um singleton?
Sim, isso é correto, @Component
é um feijão Spring e um Singleton.
Se a classe pertence à camada de serviço que você pode querer anotá-lo com @Service
vez
Mas tenha em mente que, para que essas anotações sejam detectadas, você precisa colocar esta linha em applicationContext.xml
:
<context:component-scan base-package="com.yourcompany" />
Sobre singletons - os grãos de primavera estão todos no escopo singleton por padrão. A única coisa que você deve ter em mente é que você não deve armazenar o estado em variáveis de campo (elas devem conter apenas dependências). Portanto, seu aplicativo será seguro para thread e você não precisará de uma nova instância de um bean a cada vez. Em outras palavras, seus grãos não têm estado.
Por padrão - sim.
No entanto, você pode substituir esse comportamento usando a
@Scope
anotação. Por exemplo:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
fonte