SpringBoot 經常使用註解(持續更新)

SpringBoot 經常使用註解

  • @SpringBootApplication
  • @Bean
  • @ComponentScan
  • @ControllerAdvice
  • @ExceptionHandler
  • @ResponseBody
  • @Qualifier
  • 注入(@Autowired和@Resource)

@SpringBootApplication

  • @SpringBootApplication 註解等價於已默認屬性使用@Configuration、@EnableAutoConfiguration、@ComponentScan。一般使用在有main方法中類的註解
package com.muscleape.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

@Bean

  • 產生一個bean的方法,而且交給Spring容器管理;
  • 能夠理解爲用Spring的時候xml裏面的標籤;
  • 該註解是用在方法上的,就是用來產生一個Bean;
  • 該註解分爲兩類:
    • 一、使用Bean,便是把已經在xml文件中配置好的Bean哪裏用,完成屬性、方法的組裝;例如:@Autowired和@Resource,能夠經過byTYPE(@Autowired)、byNAME(@Resource)的方式獲取Bean;
    • 二、註冊Bean,@Componenet,@Repository,@Controller,@Service,@Configuration這些註解都是把要實例化的對象轉化成一個Bean,放在IOC容器中,等須要使用的時候,會和上面的@Autowired、@Resource配合到一塊兒,把對象、屬性、方法完美組裝;
    @Bean(name = "clientbootstrap")
    public Bootstrap clientBootSrap() throws Exception {
        Bootstrap bootstrap = new Bootstrap();
        bootstrap.group(clientGroup())
                .channel(NioSocketChannel.class)
                .option(ChannelOption.TCP_NODELAY, true)
                .option(ChannelOption.SO_KEEPALIVE, true)
                .handler(clientInitializer);
        return bootstrap;
    }

@ComponentScan

  • 組件掃描。至關於 context:component-scan,若是掃描到有@Component、@Controller、@Service等這些註解的類,就把這些類註冊爲bean;

@ControllerAdvice

  • 該註解定義全局異常處理類,一般結合@ExceptionHandler使用;

@ExceptionHandler

  • 該註解聲明異常處理方法,一般結合@ControllerAdvice使用;
  • handleException()就會處理全部Controller層拋出的Exception及其子類的異常;
@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    String handleException(){
        return "Exception Deal!";
    }
}

@ResponseBody

  • 表示該方法的返回結果直接寫入HTTP response body中;
  • 通常在異步獲取數據時使用;
  • 在使用@RequestMapping以後,返回值一般解析爲跳轉路徑,加上@ResponseBody後返回結果不會被解析爲跳轉路徑,而是直接寫入HTTP Response Body中;

@Qualifier

  • 當有多個同一類型的Bean時,可使用@Qualifier("name")來指定;
  • 與@Autowired配合使用;
@Autowired
@Qualifier(value = 「demoInfoService」)
private DemoInfoService demoInfoService;

注入(@Autowired和@Resource)

  • @Autowired與@Resource均可以用來裝配bean. 均可以寫在字段上,或寫在setter方法上;
  • @Autowired默認按類型裝配(這個註解是屬業spring的),默認狀況下必需要求依賴對象必須存在,若是要容許null值,能夠設置它的required屬性爲false,如:@Autowired(required=false) ,若是咱們想使用名稱裝配能夠結合@Qualifier註解進行使用,以下:
@Autowired
@Qualifier(value = 「demoInfoService」)
private DemoInfoService demoInfoService;
  • @Resource 是JDK1.6支持的註解,默認按照名稱進行裝配,名稱能夠經過name屬性進行指定;@Resource的裝配順序:
    • 一、若是同時指定了name和type,則從Spring上下文中找到惟一匹配的bean進行裝配,找不到則拋出異常;
    • 二、若是指定了name,則從上下文中查找名稱(id)匹配的bean進行裝配,找不到則拋出異常;
    • 三、若是指定了type,則從上下文中找到類型匹配的惟一bean進行裝配,找不到或者找到多個,都會拋出異常
    • 四、若是既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配;若是沒有匹配,則回退爲一個原始類型進行匹配,若是匹配則自動裝配;
相關文章
相關標籤/搜索