[springBoot系列]--springBoot注解大全


一、注解(annotations)列表 

@SpringBootApplication:包含了@ComponentScan、@SpringBootConfiguration和@EnableAutoConfiguration注解。其中@ComponentScan讓spring Boot掃描到Configuration類並把它加入到程序上下文。

@SpringBootConfiguration:等同於spring的XML配置文件;使用Java代碼可以檢查類型安全。

@EnableAutoConfiguration: 自動配置。

@ComponentScan: 組件掃描,可自動發現和裝配一些Bean。

@Component:可配合CommandLineRunner使用,在程序啟動后執行一些基礎任務。

@RestController:注解是@Controller和@ResponseBody的合集,表示這是個控制器bean,並且是將函數的返回值直 接填入HTTP響應體中,是REST風格的控制器。

@Autowired:自動導入。

@PathVariable:獲取參數。

@JsonBackReference:解決嵌套外鏈問題。

@RepositoryRestResourcepublic:配合spring-boot-starter-data-rest使用。

二、注解(annotations)詳解

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

@SpringBootApplication // 相當於 @Configuration @EnableAutoConfiguration @ComponentScan 這三個注解
public class Application { 
  public static void main(String[] args) { 
    SpringApplication.run(Application.class, args); 
  } 
}

@EnableAutoConfiguration:第二個類級別的注解是 @EnableAutoConfiguration 。這個注解告訴Spring Boot根據添加的jar依賴猜測你想如何配置Spring。由於 spring-boot-starter-web 添加了Tomcat和Spring MVC,所以auto-configuration將假定你正在開發一個web應用並相應地對Spring進行設置。Starter POMs和Auto-Configuration:設計auto-configuration的目的是更好的使用"Starter POMs",但這兩個概念沒有直接的聯系。你可以自由地挑選starter POMs以外的jar依賴,並且Spring Boot將仍舊盡最大努力去自動配置你的應用。

你可以通過將 @EnableAutoConfiguration 或 @SpringBootApplication 注解添加到一個 @Configuration 類上來選擇自動配置。
注:你只需要添加一個 @EnableAutoConfiguration 注解。我們建議你將它添加到主 @Configuration 類上。

如果發現應用了你不想要的特定自動配置類,你可以使用 @EnableAutoConfiguration 注解的排除屬性來禁用它們。

@Configuration
@EnableAutoConfiguration(exclude{DataSourceAutoConfiguration.class})
public class MyConfiguration {
}

@Configuration:Spring Boot提倡基於Java的配置。盡管你可以使用一個XML源來調用 SpringApplication.run() ,我們通常建議你使用 @Configuration 類作為主要源。一般定義 main 方法的類也是主要 @Configuration 的一個很好候選。你不需要將所有的 @Configuration 放進一個單獨的類。 @Import 注解可以用來導入其他配置類。另外,你也可以使用 @ComponentScan 注解自動收集所有的Spring組件,包括 @Configuration 類。

如果你絕對需要使用基於XML的配置,我們建議你仍舊從一個 @Configuration 類開始。你可以使用附加的 @ImportResource 注解加載XML配置文件。

@Configuration注解該類,等價 與XML中配置beans;用@Bean標注方法等價於XML中配置bean。如下微信公眾號wx-java-tools工具配置類bean配置:

#application.properties配置文件
#微信對接配置   wechat.appId=wx77b7ff3f08e8**** wechat.secret=c240f137ec95fb193354a0399e****** wechat.token=qiujuan
@Component
@ConfigurationProperties(prefix = "wechat")    // 此為上文配置文件中內容
public class WeChatMpConfig {

    private String appId;    
    private String secret;
    private String token;
    @Bean
    public WxMpService wxMpService(){
        WxMpService wxMpService = new WxMpServiceImpl();        
     wxMpService.setWxMpConfigStorage(wxMpConfigStorage());
        return wxMpService;
    }
 
    @Bean
    public WxMpConfigStorage wxMpConfigStorage(){
        WxMpInMemoryConfigStorage wxMpConfigStorage = new WxMpInMemoryConfigStorage();
        wxMpConfigStorage.setAppId(appId);
        wxMpConfigStorage.setSecret(secret);
        wxMpConfigStorage.setToken(token);
        return wxMpConfigStorage;
    }
}

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

 

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

 

/**
 * 全局異常處理
 */
@ControllerAdvice
class GlobalDefaultExceptionHandler {
    public static final String DEFAULT_ERROR_VIEW = "error";
 
    @ExceptionHandler({TypeMismatchException.class,NumberFormatException.class})
    public ModelAndView formatErrorHandler(HttpServletRequest req, Exception e) throws Exception {
        ModelAndView mav = new ModelAndView();
        mav.addObject("error","參數類型錯誤");
        mav.addObject("exception", e);
        mav.addObject("url", RequestUtils.getCompleteRequestUrl(req));
        mav.addObject("timestamp", new Date());
        mav.setViewName(DEFAULT_ERROR_VIEW);
        return mav;
    }}
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM