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

时间:2020-07-17 13:53:57   收藏:0   阅读:172

之前学习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拥有一项特长的人

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!