Spring Boot中常用注解@Configuration,@Component,@Service,@Controller的区别

Posted Ryan97

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot中常用注解@Configuration,@Component,@Service,@Controller的区别相关的知识,希望对你有一定的参考价值。

之前学习Spring Boot有点囫囵吞枣的意味,没有细究这些注解间的差异。现在空下来重新回过头来阅读官方文档才对这几个注解有了重新的理解,专门写下来好供日后查询翻阅。

 

@Configuration

指示一个类声明了一个或多个@Bean方法,并且可以由Spring容器进行处理以在运行时为这些bean生成bean定义和服务请求。

 @Configuration
 public class AppConfig {

     @Bean
     public FooService fooService() {
         return new FooService(fooRepository());
     }

     @Bean
     public FooRepository fooRepository() {
         return new JdbcFooRepository(dataSource());
     }

     // ...
 }

FooService调用的FooRepository类型对象和fooRepository()方法所返回生成的对象是同一个。因为在运行时会对@Component进行CGLIB动态代理。

 

 

 @Component

在这个注解中的列也会包含一个或多个@Bean方法。用官网的话来说@Component类中的@Bean方法是lite mode。即不支持bean间引用,以上述代码为例,获得的对象就不再是同一个。

 

 

 @Service,@Controller和@Component的区别

大致上相同,类比的话就是:@Component是一个人,@Service和@Controller拥有一项特长的人

  • @Service:在处理业务逻辑的时候使用
  • @Controller:处理前端请求,转发,重定向

 

以上是关于Spring Boot中常用注解@Configuration,@Component,@Service,@Controller的区别的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot中常用的三个注解

Spring Boot中常用的三个注解

(002)Spring Boot之常用注解及其说明

spring boot——常用注解

spring boot常用的注解

Spring Boot常用注解