SpringBoot——常用註解

@SpringBootApplication

  • @SpringBootConfiguration : (背後也是@Configuration)這裏的@Configuration對我們來說不陌生,它就是JavaConfig形式的Spring Ioc容器的配置類使用的那個@Configuration,SpringBoot社區推薦使用基於JavaConfig的配置形式。所以,這裏的啓動類標註了@Configuration之後,本身其實也是一個IoC容器的配置類。
    任何一個標註了@Configuration的Java類定義都是一個JavaConfig配置類。
<bean id="mockService" class="..MockServiceImpl">
    ...
</bean>
@Configuration
public class MockConfiguration{
    @Bean
    public MockService mockService(){
        return new MockServiceImpl();
    }
}

任何一個標註了@Bean的方法,其返回值將作爲一個bean定義註冊到Spring的IoC容器,方法名將默認成該bean定義的id。

  • @EnableAutoConfiguration : 理念就是藉助@Import的支持,收集和註冊特定場景相關的bean定義,將所有符合自動配置條件的bean定義加載到IoC容器。最關鍵的要屬其中的@Import(EnableAutoConfigurationImportSelector.class),藉助EnableAutoConfigurationImportSelector,@EnableAutoConfiguration可以幫助SpringBoot應用將所有符合條件的@Configuration配置都加載到當前SpringBoot創建並使用的IoC容器。

  • @ComponentScan : 功能其實就是自動掃描並加載符合條件的組件(比如@Component和@Repository等)或者bean定義,最終將這些bean定義加載到IoC容器中。可以指定basePackages等屬性來細粒度的定製@ComponentScan自動掃描的範圍。一般把@SpringBoot啓動類放在root package下。默認Spring框架實現會從聲明@ComponentScan所在類的package進行掃描。

@Component

把普通 pojo 實例化到 spring 容器中,相當於配置文件中的 < bean id="" class="" />

@ RestController

  • @ResponseBody和@Controller的集合
  1. @ResponseBody:表示該方法的返回結果直接寫入HTTP Response Body中,一般在異步獲取數據時使用,用於構建RESTful的api,返回json數據。
  2. @Controller:用於定義控制器類,在spring 項目中由控制器負責將用戶發來的URL請求轉發到對應的服務接口(service層)

@Service

  • 是@Component註解的一個特例,作用在類上
  • 作用域默認爲單例
  • 一般用來修飾Service層的組件
  • 使用時沒有傳參數,Bean名稱默認爲當前類的類名,首字母小寫,也可以通過value來指定Bean名

@Repository

用於標註數據訪問層,也可以說用於標註數據訪問組件,即DAO組件

@RequestMapping

把Http請求映射到Spring MVC 和 Restful控制器的處理方法上

  • @GetMapping : @GetMapping(value = “/info”)等價於@RequestMapping(value = “/info”,method = RequestMethod.GET)
  • @PostMapping : @PostMapping(value = “/info”)等價於@RequestMapping(value = “/info”,method = RequestMethod.POST)
  • 還有PUT、DELETE方法

@RequestBody

使用json傳遞數據,把json數據封裝到對應對象裏面。

  • 注意事項
    用了@RequestBody,須使用Post提交方式。

@ResponseBody

返回數據,返回json數據。

@Autowired

  • 作用在構造函數、方法、方法參數、類字段以及註解上
  • 可以實現 Bean 的自動注入

@Resource

  • @Resource的作用相當於@Autowired,只不過@Autowired按byType自動注入,而@Resource默認按 byName自動注入罷了。
  • @Resource有兩個屬性是比較重要的,分是name和type

@Transactional

事務註解。
其本質是對方法前後進行攔截,然後在目標方法開始之前創建或者加入一個事務,在執行完目標方法之後根據執行情況提交或者回滾事務,通過 @Transactional 就可以進行事務操作,更快捷而且簡單

@Value

配置文件註解。注入Spring配置文件的值

JPA註解

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

2、@MappedSuperClass:用在確定是父類的entity上。父類的屬性子類可以繼承。

3、@NoRepositoryBean:一般用作父類的repository,有這個註解,Spring不會去實例化該repository。

4、@Column:如果字段名與列名相同,則可以省略。

5、@Id:表示該屬性爲主鍵。

6 、@GeneratedValue(strategy=GenerationType.SEQUENCE,generator= “repair_seq”):表示主鍵生成策略是sequence(可以爲Auto、IDENTITY、native等,Auto表示可在多個數據庫間切換),指定sequence的名字是repair_seq。

7、@SequenceGeneretor(name = “repair_seq”, sequenceName = “seq_repair”, allocationSize = 1):name爲sequence的名稱,以便使用,sequenceName爲數據庫的sequence名稱,兩個名稱可以一致。

8、@Transient:表示該屬性並非一個到數據庫表的字段的映射,ORM框架將忽略該屬性。如果一個屬性並非數據庫表的字段映射,就務必將其標示爲@Transient,否則,ORM框架默認其註解爲@Basic。

9、@Basic(fetch=FetchType.LAZY):標記可以指定實體屬性的加載方式。

10、@JsonIgnore:作用是json序列化時將Java bean中的一些屬性忽略掉,序列化和反序列化都受影響。

11、@JoinColumn(name=”loginId”):一對一:本表中指向另一個表的外鍵。一對多:另一個表指向本表的外鍵。

12、@OneToOne、@OneToMany、@ManyToOne:對應hibernate配置文件中的一對一,一對多,多對一。

全局異常處理

  • @ControllerAdvice:包含@Component。可以被掃描到。統一處理異常。

  • @ExceptionHandler(Exception.class):用在方法上面表示遇到這個異常就執行以下方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章