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方式進行裝配;若是沒有匹配,則回退爲一個原始類型進行匹配,若是匹配則自動裝配;