SpringBoot經常使用註解總結

在SpringBoot框架中,註解作爲一種隱式配置,極大的簡化了以前xml文件的配置方式。SpringBoot中包含許多種類的註解,這裏對在SpingBoot項目中常用到的一些註解的進行大體的概括總結;html

1、啓動相關

一、@SpringBootApplication前端

在SpirngBoot啓動類裏面,都加入了此啓動註解,此註解是個組合註解,包括了@SpringBootConfiguration 、@EnableAutoConfiguration和@ComponentScan註解。web

  • @SpringBootConfiguration 繼承至@Configuration,其實兩種功能一致,都是標註該類爲配置類
  • @EnableAutoConfiguration 這個註解是SpirngBoot自動配置的核心所在,經過此註解,能全部符合自動配置條件的bean的定義加載到spring容器中。
  • @ComponentScan 該註解會掃描當前包及子包下面被歸入sping容器管理的類。

注意事項:spring

  • 通常咱們在實際項目中會根據本身的須要排除一些無需自動配置的類,例如咱們會配置本身的數據庫,因此就不須要springboot自動注入數據源,這能夠利用exclude進行排除
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
  • 當需掃描第三方jar包時,咱們能夠經過在配置類中使用@Configuration與@ComponentScan來引入第三方jar包下的類
@Configuration
@ComponentScan(basePackages = {"com.test.service"}) //引入第三方jar包下的類

二、@Import數據庫

 @Import註解可用來導入一個或者多個 Spring 配置文件,特別是第三方jar包下的一些配置類,須要經過Import註解進行加載,代碼以下所示json

@Import({KafkaConfig.class, JedisConfig.class})  //引入第三方jar包裏配置類

2、配置相關

以通常的的配置類中用到的註解爲例bootstrap

一、@Configuration後端

@Configuration專門用來標註配置類,它通常會配合api

二、@Beanspringboot

使用@Bean註解拿到配置返回相關實例,並放入sping容器中統一管理

三、@PropertySource

目的是加載指定路徑下的屬性文件

五、@Value

配合@PropertySource註解使用,指定該字段對應的配置文件中的內容

四、@Order

利用@Order控制配置類的加載順序

結合以上註解對kafka進行配置示例代碼以下

@Configuration
@PropertySource("classpath:spring-kafka.properties")
@Order(2)
public class KafkaConfig {

    @Value("${spring.kafka.bootstrap-servers}")
    private String bootstrapServers;

    @Bean
    public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<Object, Object>> kafkaListenerContainerFactory() {
        ConcurrentKafkaListenerContainerFactory<Object, Object> factory = new ConcurrentKafkaListenerContainerFactory<Object, Object>();
        factory.setConsumerFactory(consumerFactory());
        factory.setConcurrency(1);
        // factory .getContainerProperties().setPollTimeout(1000);
        return factory;
    }
}

3、構造相關

一、@Service

用於標註服務層,主要用來進行業務的邏輯處理

二、@Repository

用於標註持久層,主要用來進行數據庫相關操做

三、@Component

一個通用的註解,能夠註解各類組件,就是說當咱們須要注入sping容器中bean類沒有明確分類時(不屬於@service、@Repository等的時候),咱們就可使用@Component來標註這個類。

四、@Scope

spring容器管理bean默認是單例模式,若是你須要使用多例模式能夠經過@Scope("prototype")註解來實現。

五、@Autowired

這個就很簡單了,用於Spring容器中Bean類實例的注入

六、@PostConstruct

在Bean初始化以後(構造方法和@Autowired以後)執行指定操做。若是在項目中有些操做須要在Bean類構造後執行,可使用@PostConstruct註解,實例代碼以下

@Component
public class demo {
    @PostConstruct
    public void start() {
        //在構造方法和@Autowired注入實例後執行
    }
}

4、web相關

一、@Controller 和 @RestController

控制器的註解,處理http請求的入口,這兩個註解的主要區別在於@Controller中若是須要返回json數據須要使用@ResponseBody註解來配合,直接用@RestController則直接返回json數據

二、@RequestMapping

RequestMapping是一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,表示類中的全部響應請求的方法都是以該地址做爲父路徑。

RequestMapping註解有六大屬性

value, method;

  • value: 指定請求的實際地址,指定的地址能夠是URI Template 模式(後面將會說明);

  • method: 指定請求的method類型, GET、POST、PUT、DELETE等;

consumes,produces;

  • consumes: 指定處理請求的提交內容類型(Content-Type),例如application/json, text/html;

  • produces: 指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回;

params,headers;

  • params: 指定request中必須包含某些參數值是,才讓該方法處理。

  • headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求;

RequestMapping的簡化註解有:

@GetMapping 等同於 @RequestMapping(method = RequestMethod.GET)
@PostMapping 等同於 @RequestMapping(method = RequestMethod.POST)
@PutMapping 等同於 @RequestMapping(method = RequestMethod.PUT)
@DeleteMapping 等同於 @RequestMapping(method = RequestMethod.DELETE)
@PatchMapping 等同於 @RequestMapping(method = RequestMethod.PATCH)

三、@RequestBody

RequestBody註解容許request的參數在reqeust體中,也就是後端以實體的方式接收前端發送的數據

四、@RequestParam

RequestParam註解則是以不一樣參數之間用&分隔的方式接收前端發送的數據

結合以上註解的常規示例代碼以下

@RestController
@RequestMapping("/api")
public class ApiController extends BaseController {

    @PostMapping("/login")
    public  User  login(@RequestBody User user){
           //代碼
     }

    @GetMapping("/getUser")
    public  User  getUser(@RequestParam String userName, @RequestParam String userPhone){
           //代碼
     }

}

以上就是在SpirngBoot項目中常用到的一些註解進行的總結,固然還有不少其餘註解在這裏就不一一贅述了。

相關文章
相關標籤/搜索