SpringBoot 是目前企業級 Java web 開發中廣泛使用的框架之一,因此在面試中被問到 SpringBoot 是極其常見的,下文將從多個方面對 SpringBoot 面試做詳細的闡述,包括 SpringBoot 的優勢、 SpringBoot 項目結構、 SpringBoot 配置文件、 SpringBoot 資料庫操作、 SpringBoot 事務管理以及 SpringBoot 的性能優化。
一、SpringBoot 的優勢
SpringBoot 的優勢主要有以下幾個方面:
首先,SpringBoot 的開發效率非常高,它可以通過快速啟動器(Starter)來快速集成各種常用的組件,例如 SpringMVC、Spring Data、Spring Security 等,而不需要進行過多的配置。另外,有了 SpringBoot,我們不需要像以前那樣手動構建 XML 配置文件,而是可以通過註解等更簡單的方式配置應用程序。
//示例代碼 @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
其次,SpringBoot 支持自動配置,我們只需要引入相應的模塊即可自動配置相應的組件,從而大大簡化了項目的配置工作。
再次,SpringBoot 內置了一個 Tomcat 容器,因此我們不需要再額外地安裝和配置 Tomcat,可以直接運行。
二、SpringBoot 項目結構
SpringBoot 項目的結構一般如下所示:
├── src │ ├── main │ │ ├── java │ │ │ └── com.example.demo │ │ │ ├── controller │ │ │ ├── mapper │ │ │ ├── model │ │ │ ├── service │ │ │ ├── DemoApplication.java //啟動類 │ │ ├── resources │ │ │ ├── application.yml //配置文件 │ │ │ ├── static //靜態資源 │ │ │ ├── templates //模板文件
其中,DemoApplication.java 是項目的啟動類,它使用了@SpringBootApplication註解來聲明它是一個 SpringBoot 應用程序,main 方法默認在 SpringBoot 中啟動 Spring 容器,並以默認配置開始運行應用程序。
三、SpringBoot 配置文件
SpringBoot 可以通過多種方式配置應用程序,其中比較常用的一種是通過 application.yml 或者 application.properties 文件進行配置。
我們可以通過配置文件來設置一些屬性,例如資料庫相關的屬性,可以在 application.yml 中配置,如下所示:
//示例代碼 spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/test?useSSL=false&characterEncoding=utf-8 username: root password: root
除此之外,也可以通過 @Value 註解來注入屬性,如下所示:
//示例代碼 @Value("${server.port}") private String port;
四、SpringBoot 資料庫操作
SpringBoot 支持多種資料庫操作方式,包括 JPA、Hibernate、MyBatis 等。其中,MyBatis 是最廣泛使用的一種方式。
在使用 MyBatis 的時候,我們需要先引入相應的依賴:
//示例代碼 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency>
然後,我們需要創建一個 DAO 層的介面和相應的 Mapper 文件,Dao 層介面可以通過 @Mapper 註解和 XML 文件來完成,如下所示:
//示例代碼 package com.example.demo.mapper; import com.example.demo.model.User; public interface UserMapper { User getUserById(Long id); }
然後,在 Mapper 文件中,我們可以使用 SQL 語句來完成對資料庫的操作:
//示例代碼 <mapper namespace="com.example.demo.mapper.UserMapper"> <select id="getUserById" resultType="com.example.demo.model.User"> SELECT * FROM user WHERE id = #{id} </select> </mapper>
五、SpringBoot 事務管理
SpringBoot 支持使用事務,可以使用 @Transactional 註解來開啟事務,示例代碼如下:
//示例代碼 @Service public class UserService { @Autowired private UserMapper userMapper; @Transactional public void updateUser(User user) { userMapper.updateUser(user); } }
在上面的代碼中,@Transactional 註解表示該方法需要開啟事務,如果方法執行失敗,則回滾事務。需要注意的是,@Transactional 註解只能應用於 public 方法上。
六、SpringBoot 性能優化
SpringBoot 的性能可以通過多種方式進行優化,其中比較常用的一種方式是使用緩存,可以使用 Spring Cache 來完成緩存,需要先引入相應的依賴:
//示例代碼 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency>
然後,我們可以在 Service 層中使用 @Cacheable 註解來緩存數據,代碼示例如下:
//示例代碼 @Service public class UserService { @Autowired private UserMapper userMapper; @Cacheable(key = "#id") public User getUserById(Long id) { return userMapper.getUserById(id); } }
在上面的代碼中,@Cacheable 註解表示該方法的返回值使用緩存,key = "#id" 表示使用 id 作為緩存的 key。
總結
本文從 SpringBoot 的優勢、項目結構、配置文件、資料庫操作、事務管理以及性能優化等多個方面對 SpringBoot 面試做了詳細的闡述,希望對讀者能夠有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/293191.html