Spring Boot是一個基於Spring框架的開發工具,主要用於快速創建基於Spring的應用程序。在Spring Boot中,只需編寫少量配置,應用程序就能跑起來。它具有輕量級、易擴展、減少配置、簡化部署等特點,因此受到越來越多開發者的歡迎。 下面我們將從多個方面逐一探討Spring Boot常見面試題。
一、Spring Boot的優缺點
1.優點
Spring Boot可以讓開發者更專註於業務邏輯的實現,而不必去關注其他的一些繁瑣的配置和實現問題。Spring Boot內置了大量的常見庫,如webMVC、數據庫訪問等,提高了開發效率。
2.缺點
Spring Boot的學習曲線是比較陡峭的,在使用過程中也有一定的局限性,如默認配置不一定滿足實際需求。
二、Spring Boot自動配置原理
Spring Boot的自動配置是通過Spring框架提供的Condition接口和@Conditional註解實現的。 通過類路徑、Bean是否已存在、屬性是否存在以及運行時容器中的其他Bean是否存在等一系列條件來判斷是否需要實例化一個Bean。
下面是一個自定義自動配置類的示例:
@Configuration public class MyAutoConfiguration { @Bean @ConditionalOnMissingBean public MyService myService() { return new MyServiceImpl(); } }
上述代碼表示:當容器中不存在名為myService的Bean時,會創建一個名為myService的Bean,並註冊到Spring容器中。
三、Spring Boot中的外部配置
除了在代碼中配置,Spring Boot還可以通過外部文件進行配置,如application.properties、application.yml等。使用外部配置最主要的優點是在不修改源碼的情況下,可以動態修改配置。
下面是一個自定義配置文件的示例:
1.在src/main/resources目錄下創建config文件夾,創建一個my.properties文件
name=李四 age=25
2.在Java類中使用註解@PropertySource指向該自定義屬性文件
@Component @PropertySource("classpath:config/my.properties") public class MyComponent { @Value("${name}") private String name; @Value("${age}") private int age; // getter和setter }
四、Spring Boot如何處理異常
Spring Boot內置了一套異常處理機制,通過@ControllerAdvice和@ExceptionHandler註解可以實現統一的異常處理。@ControllerAdvice是一個增強的Controller,可以實現三個方面的功能:全局異常處理、全局數據綁定、全局數據預處理。
下面是一個全局異常處理的示例:
@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) @ResponseBody public Map handleException(Exception e) { Map map = new HashMap(); map.put("status", "error"); map.put("message", e.getMessage()); return map; } }
五、Spring Boot如何處理跨域問題
Spring Boot可以通過註解@CrossOrigin處理跨域問題。@CrossOrigin可以設置允許跨域的域名、方法、請求頭等,在接口方法上使用即可。
下面是一個處理跨域問題的示例:
@RestController @RequestMapping("/api") @CrossOrigin(origins = "http://localhost:8080", maxAge = 3600) // 設置允許跨域的域名和生存時間 public class ApiController { @GetMapping("/user/{id}") public User getUser(@PathVariable Long id) { // ... } }
六、Spring Boot中的定時任務
Spring Boot中可以通過註解@EnableScheduling實現定時任務的自動化管理。通過@Scheduled註解可以指定任務的執行時間、周期等信息。
下面是一個定時任務的示例:
@Service @EnableScheduling public class MyService { @Scheduled(fixedDelay = 1000) public void doSomething() { // ... } }
總結
本文從Spring Boot的優缺點、自動配置原理、外部配置、異常處理、跨域問題、定時任務等多個方面對Spring Boot常見面試題做了詳細的闡述。Spring Boot作為一個開發基礎工具,應用廣泛,掌握Spring Boot的開發能力對於提高開發效率、增強競爭力等方面都具有重要意義。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/187883.html