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

2021-04-15 16:28

阅读:668

标签:ati   cglib   ima   定向   的区别   支持   声明   color   文档   

之前学习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的区别

标签:ati   cglib   ima   定向   的区别   支持   声明   color   文档   

原文地址:https://www.cnblogs.com/ryan97/p/13329126.html


评论


亲,登录后才可以留言!