spring框架中三層架構相關的注解


做了這么多年的C++,再去學Java,確實發現,語言都是相通的,即使是Java的那么多生態,理解起來也並不費勁

Spring 框架目前還在學習中,處於 Tourist 階段,目前只求會做,不求原理,等到項目經驗豐富,運用熟練,再回頭來研究原理

1、說明

springmvc 框架中將業務功能分成了經典的三層:持久層、業務層和控制層,框架中分別使用 @Repository、@Service 和 @Controller 注解來表示各層,使用 @Component 注解對不好分層的類進行注解修飾

這四個注解的作用除了閱讀時分層之外,最重要的是,被其修飾的類會被spring框架掃描並注入到bean容器中,使用時,只需要使用裝配的方式獲取對象即可

這四個注解都有一個屬性 value,該屬性的作用在 spring 中,用於根據此值獲取注入對象,springboot 中,可以使用 @Autowired 注解自動裝配,所以此屬性用處不大

2、@Repository

顧名思義,@Repository 表示一些持久層的組件,用於標注數據庫訪問的 DAO 組件

其內部會封裝一些 不涉及具體業務邏輯 的基本的數據庫操作,例如根據某個字段查找、添加、刪除,封裝數據庫query索引等

@Repository 注解標記在類上

一般用法如下:

  1. 先定義一個接口,聲明基本的接口方法;
  2. 添加接口實現類,實現這些接口,@Repository 注解修飾實現類;

示例:

public interface ProductRepository{
    public Product findById(Long id);
}
@Repository
public ProductRepositoryImpl implements ProductRepository{
    public Product findById(Long id){
        //實現方法
    }
}

3、@Service

屬於業務邏輯層,其內部方法 包含具體的業務邏輯,一般稱之為 service層 或者 manager層

service層類的內部一般會通過注入的方式得到repository層的對象,進而進行一些復雜的業務邏輯處理

@Service 注解標記在類上

4、@Controller

controller 作為MVC的C層,用於分發前端的請求,其內部一般會使用注入的方式得到 service 層對象,進行一些請求分發處理

@Controller 標記在類上,表示此類是一個controller,其內部的方法用於接受請求,具體的請求方式使用 @RequestMapping 等注解進行映射

4.1、 @RestController

@RestController 注解的效果等同於 @Controller + @ResponseBody

使用 @RestController 后,controller 方法返回 java 對象,就不再需要使用 @ResponseBody 注解轉換

5、@Component

@Component 一般用於組件,一些需要使用 spring 的依賴注入功能,但是又不好分層的類,可以使用此注解


免責聲明!

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



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