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:處理前端請求,轉發,重定向

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM