# Diff between @Bean & @Component

Both @Bean and @Component are ways to tell spring ioc container “Hey, i want u to manage these object for me”.

@Component is a class-level annotation. Its basically telling ioc container “during your startup scan, when u meet this class, please initiate it and keep it in your pocket”

* Sterotypes:
    
    * @Controller: for web request handler
        
    * @Service: for business logic
        
    * @Repository: for data access
        
* Best for: you own the source code and have full control over the code
    

@Bean is a method-level annotation. Usually found in a class marked with @Configuration. Instead of spring find the class and do the job, you write code to initialize it and return it.

* Best for: third party libaries where we have no access to the source code so that we can not annotate with @Component'
