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

一文解析SpringBoot到底強(qiáng)在哪

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

1.SpringBoot簡(jiǎn)介

核心概念

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

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

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

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

SpringBoot主要優(yōu)勢(shì)

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

2.SpringBoot的核心特性

自動(dòng)配置

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

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

工作流程:

1.檢查classpath中的依賴

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

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

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

起步依賴

起步依賴是一組預(yù)定義好的依賴描述符,它將某個(gè)功能相關(guān)的常見依賴打包在一起,開發(fā)者只需引入一個(gè) 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>

特點(diǎn)

  • 一站式依賴管理
  • 版本自動(dòng)兼容
  • 簡(jiǎn)化Maven/Gradle配置

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

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

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

  • Tomcat? : 默認(rèn)服務(wù)器(spring-boot-starter-web自帶)
  • Jetty? : 輕量級(jí)高性能服務(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常見注解

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

@SpringBootApplication(核心啟動(dòng)注解)

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

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

  • @SpringBootConfiguration:標(biāo)記為配置類
  • @EnableAutoConfiguration:?jiǎn)⒂米詣?dòng)配類
  • @ComponentScan:組件掃描

常用參數(shù):

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

@SpringBootTest(測(cè)試)

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

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

配置相關(guān)注解

@Configuration? +@Bean

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

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

此時(shí)ObjectMapper類就會(huì)被SpringIoC容器管理。

@Autowried

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

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

@Value

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

@Component
public class AppConfig {
    // 1. 注入簡(jiǎn)單字符串
    @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. 注入浮點(diǎn)數(shù)
    @Value("${app.version:1.0}")
    private double version;
}

Controller 相關(guān)注解

@RestController

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

@RequestMapping

@RequestMapping用于將 HTTP 請(qǐng)求映射到控制器方法

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

類級(jí)別注解

@RestController
@RequestMapping("/api/v1/users")  // 類級(jí)別路徑前綴
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);
    }
}

方法級(jí)別注解

@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能通過簡(jiǎn)單的yaml配置實(shí)現(xiàn)數(shù)據(jù)庫的自動(dòng)連接

一個(gè)簡(jiǎn)單的數(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

簡(jiǎn)單的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)識(shí)
  • 表現(xiàn)層:資源的表現(xiàn)形式(JSON/XML等)
  • 狀態(tài)轉(zhuǎn)移:通過HTTP方法操作資源

RESTful API設(shè)計(jì)規(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到底強(qiáng)在哪的文章就介紹到這了,更多相關(guān)SpringBoot全解析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

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

    Java中的Timer與TimerTask原理詳解

    這篇文章主要介紹了Java中的Timer與TimerTask原理詳解,timerTask本身沒什么意義,只是和timer集合操作的一個(gè)對(duì)象,實(shí)現(xiàn)它就必然有對(duì)應(yīng)的run方法,以被調(diào)用,他甚至于根本不需要實(shí)現(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é)果問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Java利用反射實(shí)現(xiàn)框架類的方法實(shí)例

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

    這篇文章主要給大家介紹了關(guān)于Java利用反射實(shí)現(xiàn)框架類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Springboot中如何自動(dòng)轉(zhuǎn)JSON輸出

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

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

最新評(píng)論

西华县| 固安县| 湘潭县| 方山县| 漳州市| 仙游县| 西和县| 龙岩市| 麻城市| 翼城县| 义马市| 临江市| 定安县| 寿宁县| 望江县| 徐汇区| 龙里县| 金山区| 陇南市| 华蓥市| 句容市| 成武县| 禹州市| 应城市| 包头市| 迁西县| 嘉义市| 保定市| 农安县| 贡山| 石楼县| 运城市| 闵行区| 常宁市| 改则县| 曲靖市| 驻马店市| 旬邑县| 聊城市| 平果县| 博乐市|