Can @Component, @Repository and @Service annotations be used interchangeably in Spring or do they provide any particular functionality besides acting as a notation device?>
@Component
is the top level generic annotation which makes the annotated bean to be scanned and available in the DI container
@Repository
is specialized annotation and it brings the feature of converting all the unchecked exceptions from the DAO classes
@Service
is specialized annotation. it do not bring any new feature as of now but it clarifies the intent of the bean
@Controller is specialized annotation which makes the bean MVC aware and allows the use of further annotation like @RequestMapping
and all such
Here are more details