Register Spring Beans

Starting from 2.0, Spring provides an option to detect beans by scanning the classpath. You can use annotations (e.g. @Component) to register bean definitions in a Spring container, and those remove the use of XML. We can use @Component which is a generic stereotype annotation or those specialized stereotype annotations: @Controller, @Service, or @Repository for presentation, service, and persistence layer, respectively. These annotations work equally for registering beans but using specialized annotation makes your classes suited for processing by tools.

When you register a bean, its bean scope is a "singleton" by default if you don't specify it. Our service class is stateless, so it is suitable to be a singleton-scoped bean.

@Service("authService")
@Scope
public class AuthenticationServiceImpl implements AuthenticationService,Serializable{
...
}
  • Line 1: You could specify bean's name in @Service or its bean is derived from class name with the first character in lower case (e.g. authenticationServiceImpl in this case).
  • Line 2: If you want to specify a bean's scope, use @Scope. For those beans used in composers, you should use scoped-proxy to ensure every time you get the latest bean.