最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文解析SpringBoot到底強在哪

 更新時間:2026年01月30日 11:29:22   作者:曄子yy  
SpringBoot是基于Spring框架的快速開發(fā)腳手架,采用約定優(yōu)于配置的理念,讓開發(fā)者能夠快速創(chuàng)建獨立運行、生產(chǎn)級的Spring應(yīng)用程序,它通過簡化配置和自動裝配機制,大幅減少了傳統(tǒng)Spring應(yīng)用開發(fā)中的樣板代碼,下面通過本文解析SpringBoot到底強在哪,感興趣的朋友一起看看吧

1.SpringBoot簡介

核心概念

SpringBoot是基于Spring框架的快速開發(fā)腳手架,采用約定優(yōu)于配置的理念,讓開發(fā)者能夠快速創(chuàng)建獨立運行、生產(chǎn)級的Spring應(yīng)用程序。它通過簡化配置自動裝配機制,大幅減少了傳統(tǒng)Spring應(yīng)用開發(fā)中的樣板代碼。

SpringBoot與Spring框架關(guān)系

或許很多人都認(rèn)為SpingBoot是Spring的替代品,其實并非這樣,SpringBoot是Spring框架的擴展和增強:

  • 建立在Spring Framework之上
  • 繼承了Spring的所有特性(IoC、AOP、事務(wù)管理等)
  • 提供了更簡單的配置和部署方式
  • 目標(biāo)是讓Spring開發(fā)變得快速而簡單

SpringBoot主要優(yōu)勢

  • 簡化配置:無需配置XML文件,自動化配置機制
  • 快速開發(fā):通過Starter依賴快速集成各種技術(shù)棧
  • 內(nèi)嵌服務(wù)器:內(nèi)置Tomcat、Jetty或Undertow,無需單獨部署
  • 生產(chǎn)就緒:內(nèi)置健康檢查、指標(biāo)收集和管理端點
  • 微服務(wù)友好:天然支持微服務(wù)架構(gòu)

2.SpringBoot的核心特性

自動配置

在我們創(chuàng)建一個初始的SpringBoot項目時,在啟動類上會有一個@SpringBootApplication注解,SpringBoot的自動配置就是該注解中的@EnableAutoConfiguration所實現(xiàn)的

// SpringBoot自動根據(jù)classpath中的jar包、已定義的bean等條件
// 自動配置相應(yīng)的組件
@EnableAutoConfiguration  // 啟用自動配置
// 例如:當(dāng)classpath中有HSQLDB時,自動配置內(nèi)存數(shù)據(jù)庫

工作流程:

1.檢查classpath中的依賴

2.讀去spring.factories中的配置類

3.根據(jù)條件注解(@Conditional)決定是否創(chuàng)建Bean

4.應(yīng)用默認(rèn)屬性配置

起步依賴

起步依賴是一組預(yù)定義好的依賴描述符,它將某個功能相關(guān)的常見依賴打包在一起,開發(fā)者只需引入一個 starter,即可獲得開發(fā)該功能所需的所有庫。

<!-- 示例:添加Web Starter -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 數(shù)據(jù)庫 Starter -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

特點

  • 一站式依賴管理
  • 版本自動兼容
  • 簡化Maven/Gradle配置

內(nèi)嵌服務(wù)器

Spring Boot 內(nèi)置了多個流行的 Servlet 容器,允許開發(fā)者無需部署 WAR 包即可運行 Web 應(yīng)用。

Spring Boot 支持以下三種主流的嵌入式服務(wù)器:

  • Tomcat? : 默認(rèn)服務(wù)器(spring-boot-starter-web自帶)
  • Jetty? : 輕量級高性能服務(wù)器
  • Undertow? : 高性能非阻塞服務(wù)器(WildFly 使用)

如果你想使用其他的服務(wù)器,可以在xml文件中更改依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 排除 Tomcat -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- 切換為 Jetty -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<!-- 或切換為 Undertow -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-undertow</artifactId>
</dependency>

3.SpringBoot常見注解

啟動類相關(guān)注解

@SpringBootApplication(核心啟動注解)

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

作用:組合注解,包含以下三個核心注解:

  • @SpringBootConfiguration:標(biāo)記為配置類
  • @EnableAutoConfiguration:啟用自動配類
  • @ComponentScan:組件掃描

常用參數(shù):

@SpringBootApplication(
    scanBasePackages = "com.example",  // 掃描包路徑
    exclude = {DataSourceAutoConfiguration.class},  // 排除自動配置
    scanBasePackageClasses = {UserService.class}  // 掃描特定類所在包
)

@SpringBootTest(測試)

src.text包下自動為我們創(chuàng)建好的測試類

@SpringBootTest()
class ApplicationTests {
    @Test
    void contextLoads() {
      //測試代碼
    }
}

配置相關(guān)注解

@Configuration? +@Bean

@Configuration修飾的類是一個配置類,@Bean注解能夠?qū)⒈宦暶鞣椒ǖ姆祷刂捣湃雜pringIoC容器內(nèi)。

@Configuration
public class AppConfig {
    @Bean
    public ObjectMapper objectMapper() {
        return new ObjectMapper();
    }
}

此時ObjectMapper類就會被SpringIoC容器管理。

@Autowried

@Autowried一般修飾在字段上實現(xiàn)依賴注入

@Component
public class OrderService {
    @Autowired
    private UserRepository userRepository;  // 字段注入
    @Autowired
    private ProductRepository productRepository;
}

@Value

@Value是用于注入配置值的注解

@Component
public class AppConfig {
    // 1. 注入簡單字符串
    @Value("${app.name}")
    private String appName;
    // 2. 注入數(shù)字
    @Value("${app.port:8080}")  // 默認(rèn)值
    private int port;
    // 3. 注入布爾值
    @Value("${app.enabled:true}")
    private boolean enabled;
    // 4. 注入浮點數(shù)
    @Value("${app.version:1.0}")
    private double version;
}

Controller 相關(guān)注解

@RestController

@RestController@Component作用類似,用于標(biāo)注這是一個Controller類

@RequestMapping

@RequestMapping用于將 HTTP 請求映射到控制器方法

  • 標(biāo)記類時作用是作為http請求的路徑前綴
  • 標(biāo)記方法時作用是直接映射到對應(yīng)路徑

類級別注解

@RestController
@RequestMapping("/api/v1/users")  // 類級別路徑前綴
public class UserController {
    // 完整路徑: /api/v1/users
    @GetMapping
    public List<User> getUsers() {
        return userService.findAll();
    }
    // 完整路徑: /api/v1/users/{id}
    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.findById(id);
    }
}

方法級別注解

@RestController
public class SimpleController {
    // 映射到 /hello
    @RequestMapping("/hello")
    public String hello() {
        return "Hello World";
    }
    // 映射到 /greet
    @RequestMapping(value = "/greet", method = RequestMethod.GET)
    public String greet() {
        return "Greetings!";
    }
}

4.SpringBoot數(shù)據(jù)庫的集成

SpringBoot能通過簡單的yaml配置實現(xiàn)數(shù)據(jù)庫的自動連接

一個簡單的數(shù)據(jù)配置:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/demo_db
    username: demo_user
    password: demo_pass
    driver-class-name: com.mysql.cj.jdbc.Driver

簡單的CRUD示例(Spring Data JPA):

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
    // 創(chuàng)建用戶
    public User createUser(User user) {
        return userRepository.save(user);
    }
    // 查詢用戶
    public User getUserById(Long id) {
        return userRepository.findById(id)
                .orElseThrow(() -> new UserNotFoundException("用戶不存在"));
    }
    // 更新用戶
    public User updateUser(Long id, User userDetails) {
        User user = getUserById(id);
        user.setUsername(userDetails.getUsername());
        user.setEmail(userDetails.getEmail());
        return userRepository.save(user);
    }
    // 刪除用戶
    public void deleteUser(Long id) {
        userRepository.deleteById(id);
    }
    // 查詢所有用戶
    public List<User> getAllUsers() {
        return userRepository.findAll();
    }
}

5.pringBoot RESTful API開發(fā)

REST架構(gòu)核心概念

REST(Representational State Transfer)是一種軟件架構(gòu)風(fēng)格,包含以下核心概念:

  • 資源:一切皆資源,用URI標(biāo)識
  • 表現(xiàn)層:資源的表現(xiàn)形式(JSON/XML等)
  • 狀態(tài)轉(zhuǎn)移:通過HTTP方法操作資源

RESTful API設(shè)計規(guī)范

RESTful API是在這四種經(jīng)典Http方法的基礎(chǔ)上建立的

  • GET方法:獲取資源
  • POST方法:創(chuàng)建資源
  • PUT方法:更新資源
  • DELETE方法:刪除資源

經(jīng)典的使用示例如下:

@RestController
@RequestMapping("/api/v1/users")
public class UserController {
    // GET /api/v1/users
    @GetMapping
      // 獲取所有用戶
    // GET /api/v1/users/{id}
    @GetMapping("/{id}")
        // 根據(jù)ID獲取用戶
    // POST /api/v1/users
    @PostMapping
        // 創(chuàng)建用戶
    // PUT /api/v1/users/{id}
    @PutMapping("/{id}")
        // 更新用戶
    // DELETE /api/v1/users/{id}
    @DeleteMapping("/{id}")
        // 刪除用戶
}

到此這篇關(guān)于一文解析SpringBoot到底強在哪的文章就介紹到這了,更多相關(guān)SpringBoot全解析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中的2種集合排序方法介紹

    Java中的2種集合排序方法介紹

    這篇文章主要介紹了Java中的2種集合排序方法介紹,本文直接給出代碼,相關(guān)說明請看代碼中的注釋,需要的朋友可以參考下
    2014-10-10
  • Java中NoClassDefFoundError?和?ClassNotFoundException的區(qū)別

    Java中NoClassDefFoundError?和?ClassNotFoundException的區(qū)別

    Java中NoClassDefFoundError和ClassNotFoundException的區(qū)別,從類繼承層次上來看,ClassNotFoundException是從Exception繼承的,所以ClassNotFoundException是一個檢查異常。具體詳情需要的朋友可以參考下面文章內(nèi)容
    2022-06-06
  • Java中Collections.emptyList()的注意事項

    Java中Collections.emptyList()的注意事項

    這篇文章主要給大家介紹了關(guān)于Java中Collections.emptyList()的注意事項,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java中的Timer與TimerTask原理詳解

    Java中的Timer與TimerTask原理詳解

    這篇文章主要介紹了Java中的Timer與TimerTask原理詳解,timerTask本身沒什么意義,只是和timer集合操作的一個對象,實現(xiàn)它就必然有對應(yīng)的run方法,以被調(diào)用,他甚至于根本不需要實現(xiàn)Runnable,需要的朋友可以參考下
    2023-07-07
  • Java mysql特殊形式的查詢語句詳解

    Java mysql特殊形式的查詢語句詳解

    這篇文章主要介紹了Java mysql特殊形式的查詢,包括子查詢和聯(lián)合查詢、自身連接查詢問題,本文通過sql語句給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • mybatis-plus如何修改日志只打印SQL語句不打印查詢結(jié)果

    mybatis-plus如何修改日志只打印SQL語句不打印查詢結(jié)果

    這篇文章主要介紹了mybatis-plus如何修改日志只打印SQL語句不打印查詢結(jié)果問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Java利用反射實現(xiàn)框架類的方法實例

    Java利用反射實現(xiàn)框架類的方法實例

    這篇文章主要給大家介紹了關(guān)于Java利用反射實現(xiàn)框架類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 詳解Java的Hibernat框架中的Map映射與SortedMap映射

    詳解Java的Hibernat框架中的Map映射與SortedMap映射

    這篇文章主要介紹了Java的Hibernat框架中的Map映射與SortedMap映射,Hibernat是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • Java 如何使用正則表達(dá)式去除前導(dǎo)0

    Java 如何使用正則表達(dá)式去除前導(dǎo)0

    這篇文章主要介紹了Java 使用正則表達(dá)式去除前導(dǎo)0的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Springboot中如何自動轉(zhuǎn)JSON輸出

    Springboot中如何自動轉(zhuǎn)JSON輸出

    這篇文章主要介紹了Springboot中如何自動轉(zhuǎn)JSON輸出,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論

临泉县| 体育| 岱山县| 沁水县| 吉首市| 温宿县| 永寿县| 崇信县| 鄂温| 巴青县| 眉山市| 都安| 柞水县| 康定县| 永泰县| 河东区| 珲春市| 区。| 平南县| 溧水县| 石河子市| 六枝特区| 吴江市| 平安县| 娄底市| 卓尼县| 新沂市| 英德市| 吐鲁番市| 沽源县| 沅江市| 仲巴县| 葫芦岛市| 花垣县| 津市市| 玉树县| 叶城县| 香港| 保亭| 阿鲁科尔沁旗| 略阳县|