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

如何對spring框架的搭建進行封裝--springboot

 更新時間:2025年03月31日 09:09:24   作者:yyyyyyykk  
這篇文章主要介紹了如何對spring框架的搭建進行封裝--springboot,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一.回顧spring

優(yōu)點

開源,輕量級,非侵入式一站式框架,簡化企業(yè)級應(yīng)用開發(fā)??刂品崔D(zhuǎn)(IOC),依賴注入(DI)降低了組件之間的耦合性,實現(xiàn)了軟件各層之間 的解耦。

面向切面(AOP),利用它可以很容易實現(xiàn)一些攔截,如事務(wù)控制等。

spring 對于主流的應(yīng)用框架提供了很好的支持,例如 mybatis。

spring 提供有自己的 mvc 實現(xiàn)。

缺點

雖然 spring 的組件代碼是輕量級的,但它的配置卻是重量級的。雖然 spring引入了注解功能,但是仍然需要編寫大量的模板化配置文件.項目的依賴管理也是一件耗時耗力的事情,在環(huán)境搭建時,需要分析要導(dǎo)入大量庫的坐標,而且還需要分析導(dǎo)入與之有依賴關(guān),一旦選錯依賴的版本,隨之而來的不兼容問題就會嚴重阻礙項目的開發(fā)進度。

Spring Boot 對上述 spring 的缺點進行的改善和優(yōu)化,基于約定優(yōu)于配置的思想.

可以讓開發(fā)人員不必在配置與邏輯業(yè)務(wù)之間進行思維的切換,全身心的投入到邏輯業(yè)務(wù)的代碼編寫中,從而大大提高了開發(fā)的效率,一定程度上縮短了項目周期。

二.springboot概述

Spring Boot 是由 Pivotal 團隊提供的在 spring 框架基礎(chǔ)之上開發(fā)的框架,其設(shè)計目的是用來簡化應(yīng)用的初始搭建以及開發(fā)過程。

Spirng Boot 本身并不提供 Spring 框架的核心特性以及擴展功能,只是用于快速、敏捷地開發(fā)新一代基于 Spring 框架的應(yīng)用程序。也就是說,它并不是用來替代 Spring 的解決方案,而是和 Spring 框架緊密結(jié)合用于提升 Spring 開發(fā)者體驗的工具.Spring Boot 以約定大于配置的核心思想,從而使開發(fā)人員不再需要定義樣板化的配置。它集成了大量常用的第三方庫配置(例如 Redis,Jpa RabbitMQ,Quartz 等等),Spring Boot 應(yīng)用中這些第三方庫幾乎可以零配置的開箱即用。

通過這種方式,Spring Boot 致力于在蓬勃發(fā)展的快速應(yīng)用開發(fā)領(lǐng)域成為領(lǐng)導(dǎo)者。

在Spring Boot 只需要“run”就可以非常輕易的構(gòu)建獨立的、企業(yè)級別的spring 應(yīng)用。

三.springboot的特點

創(chuàng)建獨立的 spring 應(yīng)用程序直接內(nèi)嵌 tomcat、jetty 和 undertow 提供了固定化的“starter”配置

以簡化構(gòu)建配置盡可能的自動配置 spring 和第三方庫提供產(chǎn)品級的功能,如:安全指標、運行狀況監(jiān)測和外部化配置等絕對不會生成代碼,并且不需要 XML 配置。

springboot的核心功能:

起步依賴

起步依賴就是將具備某種功能的坐標打包到一起,并提供一些默認的功能。

自動配置

Spring Boot 的自動配置是一個運行時(更準確地說,是應(yīng)用程序啟動時)的過程,考慮了眾多因素,才決定 Spring 配置應(yīng)該用哪個,不該用哪個。該過程是 Spring 自動完成的。

四.springboot環(huán)境搭建

創(chuàng)建一個普通的maven項目。

pom.xml中配置下面信息:

<!--依賴的父級工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.6</version>
<relativePath/>
</parent>
<!--指定 jdk 版本-->
<properties>
<java.version>1.8</java.version>
</properties>
<!--添加基本的 springweb 依賴-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!--打包插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.6</version>
</plugin>
</plugins>
</build>

springboot中內(nèi)置了服務(wù)器,所以不需要像以前一樣將項目部署到tomcat服務(wù)器中,只需要創(chuàng)建一個啟動類:

創(chuàng)建啟動類之后,就不需要啟動服務(wù)器,直接啟動此類即可。、

啟動后如下:

拓展:啟動時的logo可以自行切換,只需要在resources文件夾下,創(chuàng)建一個banner.txt就可以實現(xiàn)啟動logo的切換了。(在線生成啟動logo的網(wǎng)址:https://www.bootschool.net/ascii-art)

五.springboot配置文件

Spring Boot 使用一個全局的配置文件( 配置文件名是固定的,必須為 application),用來存儲項目中需要用到的各種配置參數(shù).配置文件格式有兩種,一種為 properties 格式,一種 yaml 格式.

1.application.properties

屬性文件格式,內(nèi)容為鍵值對。eg:

server.port=8080 (鍵=值)

2.application.yml

yml 是 YAML(YAML Ain’t Markup Language)語言的文件,以數(shù)據(jù)為中心。eg:

server:
(空格)port:(空格)8080(空格必須存在,格式要求)

yaml的基本語法:

語法結(jié)構(gòu):key:空格 value;

  • 以此來表示一對鍵值對(空格不能省略);
  • 以空格的縮進來控制層級關(guān)系,只要是左邊對齊的一列數(shù)據(jù)都是同一個層級的;
  • 字面量直接寫在后面就可以,字符串默認不用加上雙引號或者單引號;
  • 以#作為注釋符號.

eg:

user:
   name:  zhangsan
   age:   20

使用@Value 注解標簽將配置文件中的內(nèi)容映射到類中的屬性.

@Value("${user.name}")

六.springboot數(shù)據(jù)訪問管理

數(shù)據(jù)源配置:

首先,為了連接數(shù)據(jù)庫需要引入 jdbc 支持,在 pom.xml 中引入如下配置:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

使用mysql數(shù)據(jù)庫還需要添加mysql依賴:

<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>

添加數(shù)據(jù)源之后,為了和數(shù)據(jù)庫連接,我們還需要在 application.yml 中去配置信息:

spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/數(shù)據(jù)庫名?serverTimezone=Asia/Shanghai
username: 用戶名
password: 用戶密碼
driver-class-name: com.mysql.cj.jdbc.Driver

springboot整合阿里數(shù)據(jù)源:

首先需要導(dǎo)入阿里數(shù)據(jù)源的 .jar 包:

<!-- 阿里數(shù)據(jù)源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>

application.yml 中去配置信息:

 //他們和url,username,password在一個層級中
 type: com.alibaba.druid.pool.DruidDataSource
 initialSize: 5 #初始化時建立物理連接的個數(shù)
 maxActive: 20 #最大連接池數(shù)量

七.springboot注解

springboot 實現(xiàn)自動裝配的核心仍然是使用注解標簽

@SpringBootApplication 是 springboot 核心注解,使用在啟動類前。

其中包含 @SpringBootConfiguration,@EnableAutoConfiguration, @ComponentScan.

@Configuration 一般使用在攔截器的前面。

加入@Configuration 注解,表明這就是一個配置類。有一個 myBean()的方法并用@Bean 進行注釋,返回一個 MyBean()的實例,表明這個方法是需要被Spring 進行管理的 bean。@Bean 如果不指定名稱的話,默認使用 myBean 名稱,也就是小寫的名稱。

@Bean

相當于 XML 中的<bean></bean>,放在方法的上面,而不是類,意思是產(chǎn)生一個 bean,并交給 spring 管理。eg:(類似于之前寫過的跨域問題)

package com.zyk.news.config;
 
 
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import java.util.Collections;
@Configuration
public class CorsConfig {
 
    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        //1,允許任何來源
        corsConfiguration.setAllowedOriginPatterns(Collections.singletonList("*"));
        //2,允許任何請求頭
        corsConfiguration.addAllowedHeader(CorsConfiguration.ALL);
        //3,允許任何方法
        corsConfiguration.addAllowedMethod(CorsConfiguration.ALL);
        //4,允許憑證
        corsConfiguration.setAllowCredentials(true);
 
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", corsConfiguration);
        return new CorsFilter(source);
    }
}

八.springboot集成mybatis

首先在 pom.xml 文件中導(dǎo)入依賴的 jar 包:

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>

下面在 application.yml 中配置信息:

mybatis:
  type-aliases-package: com.zyk.news.model //模型類地址
  mapper-locations: classpath:mappers/*Mapper.xml 
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

最后還需要在啟動類前加上 @MapperScan("接口所在的包地址") 注解。eg:

九.springboot全局異常捕獲與處理

Springboot 對于異常的處理也做了不錯的支持 ,它提供了一個 @RestControllerAdvice 注解以及 @ExceptionHandler 注解,前者是用來開啟全局的異常捕獲,后者則是說明捕獲哪些異常,對那些異常進行處理。

eg:

@RestControllerAdvice
public class GlobalExceptionHandler {
/**
* 異常處理
*/
@ExceptionHandler(Exception.class)
public CommonResult globalException(Exception e) {
     CommonResult commonResult = new CommonResult(500,e.getMessage());
     return commonResult;
   }
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中for循環(huán)的執(zhí)行過程分析

    Java中for循環(huán)的執(zhí)行過程分析

    這篇文章主要介紹了Java中for循環(huán)的執(zhí)行過程,實例分析了for循環(huán)的執(zhí)行原理與順序,對于深入理解Java具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • Java 中的Map遍歷并刪除的幾種方法對比分析

    Java 中的Map遍歷并刪除的幾種方法對比分析

    在Java中,遍歷并刪除Map中的元素有幾種常見的方法,每種方法都有其適用場景和優(yōu)缺點,下面給大家分享Java 中的Map遍歷并刪除的幾種方法對比分析,感興趣的朋友一起看看吧
    2025-06-06
  • SpringBoot SSE服務(wù)端主動推送事件的實現(xiàn)

    SpringBoot SSE服務(wù)端主動推送事件的實現(xiàn)

    本文主要介紹了SpringBoot SSE服務(wù)端主動推送事件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Java 中實現(xiàn)異步的多種方式

    Java 中實現(xiàn)異步的多種方式

    文章介紹了Java中實現(xiàn)異步處理的幾種常見方式,每種方式都有其特點和適用場景,通過選擇合適的異步處理方式,可以提高程序的性能和可維護性,感興趣的朋友一起看看吧
    2025-03-03
  • Spring Native實現(xiàn)0.059s啟動一個SpringBoot項目

    Spring Native實現(xiàn)0.059s啟動一個SpringBoot項目

    Spring Native是Spring框架的一個子項目,旨在提供一種將Spring應(yīng)用程序編譯為本地可執(zhí)行文件的方法,從而提高啟動時間和資源效率,本文主要介紹了Spring Native實現(xiàn)0.059s啟動一個SpringBoot項目,感興趣的可以了解一下
    2024-02-02
  • java計算百分比值的方法

    java計算百分比值的方法

    這篇文章主要介紹了java計算百分比值的方法,涉及java數(shù)值運算的技巧,需要的朋友可以參考下
    2015-03-03
  • Java同學(xué)找工作最懵圈的問題:到底啥是分布式系統(tǒng)開發(fā)經(jīng)驗?(推薦)

    Java同學(xué)找工作最懵圈的問題:到底啥是分布式系統(tǒng)開發(fā)經(jīng)驗?(推薦)

    這篇文章主要介紹了分布式系統(tǒng)開發(fā)經(jīng)驗,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • SpringBoot整合Apache Spark實現(xiàn)一個簡單的數(shù)據(jù)分析功能

    SpringBoot整合Apache Spark實現(xiàn)一個簡單的數(shù)據(jù)分析功能

    ApacheSpark是一個開源的大數(shù)據(jù)處理框架,它提供了豐富的功能和API,用于分布式數(shù)據(jù)處理、數(shù)據(jù)分析和機器學(xué)習(xí)等任務(wù),下面我們就來看看SpringBoot如何整合Apache Spark實現(xiàn)一個簡單的數(shù)據(jù)分析功能吧
    2025-11-11
  • spring-Kafka中的@KafkaListener深入源碼解讀

    spring-Kafka中的@KafkaListener深入源碼解讀

    本文主要通過深入了解源碼,梳理從spring啟動到真正監(jiān)聽kafka消息的這套流程,從spring啟動開始處理@KafkaListener,本文結(jié)合實例流程圖給大家講解的非常詳細,需要的朋友參考下
    2023-02-02
  • java項目中的絕對路徑和相對路徑用法說明

    java項目中的絕對路徑和相對路徑用法說明

    這篇文章主要介紹了java項目中的絕對路徑和相對路徑用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08

最新評論

光泽县| 吉首市| 孟州市| 永安市| 凌源市| 凤山县| 紫金县| 张家港市| 成武县| 陇南市| 大港区| 神农架林区| 栖霞市| 赤水市| 临潭县| 拉萨市| 鹤庆县| 延边| 克拉玛依市| 漳州市| 蚌埠市| 朝阳市| 盘锦市| 金溪县| 陆良县| 梁河县| 兰州市| 清丰县| 巢湖市| 临海市| 故城县| 衡东县| 苏尼特右旗| 大城县| 沛县| 巴里| 南安市| 思茅市| 龙山县| 大港区| 杭锦后旗|