SpringBoot常用註解及介紹

SpringBoot常用註解

@SpringBootApplication

  • 申明讓spring boot自動給程序進行必要的配置,這個配置等同於:@Configuration,@EnableAutoConfiguration和@ComponentScan三個配置

  • 通常用在啓動類中

@ResponseBody

  • 表示該方法的返回結果直接寫入HTTP response body中,一般在異步獲取數據時使用,用於構建RESTful的api。

@Controller

  • 用於定義控制器類,在spring項目中由控制器負責將用戶發來的URL請求轉發到對應的服務接口(service層)。

@RestController

  • 用於標註控制層組件,@ResponseBody和@Controller的合集。

@RequestMapping

  • 提供路由信息,負責URL到Controller中的具體函數的映射。

  • 表示該控制器處理所有“/path”的url請求。

  • RequestMapping是一個用來處理請求地址映射的註解,可用於類或方法上。

  • 用於類上,表示類中的所有響應請求的方法都是以該地址作爲父路徑。該註解有六個屬性:

  1. parmas:指定request中必須包含某些參數值,才讓該方法處理。
  2. headers:指定request中必須包含某些指定的header值,才能讓該方法處理請求。
  3. value:指定請求的實際地址
  4. method:指定請求的method類型
  5. consumes:指定處理請求的提交內容類型,Content-Type
  6. produces:指定返回的內容類型,僅當request請求頭中的Accept類型包含該指定類型才返回。

@RequestParam

  • 用在方法的參數前面。

@PathVariable

  • 路徑變量

@RequestHeader

  • 從請求的header中獲取參數

@ModelAttribute

  • 在請求Controller時,首先會通過該註解標識的方法,可以在該方法中做一些預處理操作

  • 例如:通過@ModelAttribute註解方法獲取token,並解析數據,然後在想要獲取用戶信息的Controller方法中再次使用@ModelAttribute註解獲取處理好的用戶數據。

    @ModelAttribute
    public User getUser(@RequestHeader("Authorization") String token) {
        User user = (User) redisUtil.getCacheObject(token);
        return user;
    }
    
    @GetMapping("status")
        public Result getAttendanceStatus(@ModelAttribute User user) {
            return Result.success(MongodbUtil.find(new AttendanceDto(), new String[]{"userId"},
                    new Object[]{user.getUserId()}, Constant.MONGO_COLLECTION_RUNNING)
                    .size() % 2 == 0 ? "start" : "end");
        }
    
  • 如果希望在每個Controller中都獲得操作之後的數據,可以創建一個BaseController,然後讓其它Controller以繼承的方式進行使用。

@EnableAutoConfiguration

  • Spring boot自動配置,嘗試根據你添加的jar依賴自動配置你的spring應用

@ComponentScan

  • 表示將該類自動發現掃描組件。如果掃描到有@Component、@Controller、@Service等這些註解的類,並註冊Bean,可以自動收集所有的spring組件,包括@Configuration類。

@Configuration

  • 相當於傳統的xml配置文件,如果有些第三方庫需要用到xml文件,建議仍然通過@Configuration類作爲項目的配置主類–可以使用@ImportResource註解加載xml配置文件。

@Import

  • 用來導入其它配置類。

@ImportResource

  • 用來加載xml配置文件。

@Autowired

  • 自動導入依賴的bean。自動導入依賴的bean。byType方式。把配置好的Bean拿來用,完成屬性、方法的組裝,它可以對類成員變量、方法及構造函數進行標註,完成自動裝配的工作。當加上(required=false)時,就算找不到bean也不報錯。

@Service

  • 一般用於修飾service層的組件。

@Repository

  • 使用@Repository註解可以確保dao或者repositories提供異常轉譯,這個註解修飾的dao或者repositories類會被ComponetScan發現並配置,同時也不需要爲它們提供xml配置項。

@Bean

  • 用@Bean標註方法等價於Xml中配置的bean

@Value

  • 注入spring boot application.properties配置的屬性的值。

@Inject

  • 等價於morende@Autowired,只是沒有required屬性

@Component

  • 泛指組件,當組件不好歸類的時候,我們可以使用這個註解進行標註。

@Qualifier

  • 當有多個同一類型的bean時,可以用@Qualifier(“name”)來指定。與@Atuowired配合使用。@Qualifier限定描述符除了能根據名字進行注入,但能進行更細粒度的控制如何選擇侯選者
@Autowired
@Qualifier(value="demoInfoService")
private DemoInfoService demoInfoService;

@Resource

  • name,type:沒有指定的話,默認byName。

@ControllerAdvice

  • 包含@Component。可以被掃描到,同一異常處理。

@ExceptionHandler(Exception.class)

  • 用在方法上面表示遇到這個異常就指定以下方法。

JPA註解

@Entity

  • @Table(name="")表明這是一個實體類。一般用於jpa這兩個註解一般一塊使用,但是如果表名和實體類名相同的話,@Table可以省略。

@MappedSuperClass

  • 用在確定是父類的entity上。父類的屬性子類可以繼承。

@NoRepositoryBean

  • 一般用作父類的repository,有這個註解,spring不會去實例化該repository。

@Column

  • 如果字段名與列名相同,則可以省略。

@Id

  • 表示該屬性爲主鍵

@GeneratedValue(strategy=GenerationType.SEQUENCE,generator=“repair_seq”)

  • 表示主鍵生成策略是sequence,指定sequence的名字是repair_seq

@SequenceGeneretor(name=“repair_seq”,sequenceName=“seq_repair”,allocationSize=1)

  • name爲sequence的名稱,以便使用,sequenceName爲數據庫的sequence名稱,兩個名稱可以一致。

@Transient

  • 表示該屬性並非一個到數據庫表的字段的映射,ORM框架將忽略該屬性。如果一個屬性並非數據庫表的字段映射,就務必將其表示爲@Transient,否則ROM框架默認其註解爲@Basic,@Basic(fetch=FetchType.LAZY):標記可以指定實體屬性的加載方式。

@JsonIgnore

  • 作用是jison序列化時將java bean中的一些屬性忽略掉,序列化和反序列化都受影響。

@JoinColumn(name=“loginId”)

  • 一對一,本表中指向另一個表的外鍵。一對多:另一個表指向本表的外鍵。

@OneToOne、@OneToMany、@ManToOne

  • 對應hibernate配置文件中的一對一、一對多、多對一。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章