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
微信掃一掃
支付寶掃一掃