亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Kotlin 和 Java 混合開發(fā)入門教程

 更新時(shí)間:2021年09月02日 15:48:38   作者:蒹葭殘輝  
這篇文章主要介紹了入門 Kotlin 和 Java 混合開發(fā),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、前沿

如果你學(xué)習(xí)過其他的編程語言,你就會(huì)發(fā)現(xiàn) Java 的語法很是哆嗦,可是我們?yōu)槭裁礇]有放棄 Java 這門編程語言呢?因?yàn)?JVM 是一個(gè)非常好的平臺(tái),而且 Java 程序員目前在中國所占的比重實(shí)在是太高了。這是歷史包袱導(dǎo)致的。暫且不說 Python,語法絕對(duì)比 Java 簡(jiǎn)化的不是一個(gè)級(jí)別,就連 C# 也比 Java 語法優(yōu)美很多。

我們知道,Java 程序運(yùn)行過程是這樣的:

編寫源代碼(.java)-> 編譯源文件(.class)-> JVM 虛擬機(jī)將 class 文件加載進(jìn)內(nèi)存,執(zhí)行

既然如此,如果有一門語言同樣能編譯成 class 文件,再由 JVM 去加載他,并且這門語言比 Java 語法更加優(yōu)美簡(jiǎn)潔,你樂不樂意去使用呢?那么這門優(yōu)秀的語言就是 Kotlin。Kotlin 他的運(yùn)程過程是這樣的:

編寫源代碼(.kt)-> 編譯源文件(.class)-> JVM 虛擬機(jī)將 class 文件加載進(jìn)內(nèi)存,執(zhí)行。

2017年,Google 宣布 Kotlin 成為 Android 官方開發(fā)語言,可見Kotlin 之好。

當(dāng)然,隨著 Kotlin 的發(fā)展,Kotlin 已經(jīng)不單單是 JVM 平臺(tái)上的語言,也可以將 Kotlin 代碼編譯為 JavaScript,未來還會(huì)有 Kotlin Native,可見 Kotlin 絕對(duì)是極具潛力。

二、學(xué)習(xí) Kotlin 前準(zhǔn)備

工欲善其事,必先利其器。首先一定要選擇一個(gè)好的 IDE,Kotlin 是由 JetBrains 公司開發(fā),那么我們當(dāng)然要用 JetBrains 公司自家的 IDE 啦,我們就選用 IDEA!相信現(xiàn)在絕大多數(shù) Java 開發(fā)者都在用的。

enter image description here

我們新建一個(gè)普通項(xiàng)目即可。

如果我們要寫 Kotlin 代碼,很簡(jiǎn)單,右鍵,新建一個(gè) Kotlin 文件即可。

enter image description here

新建文件后,IDE 會(huì)提示我們需要配置,按照提示,配置一下即可。

enter image description here

三、Kotlin 語法簡(jiǎn)介

如果你已經(jīng)學(xué)習(xí)過了 Java,入門 Kotlin 會(huì)很快。

我們先來寫一個(gè)Hello world!

打開我們新建好的 kt 文件,輸入以下代碼:

fun main(args: Array<String>) {
    print("hello world")
}

我們?cè)賮砘仡櫼幌?Java 代碼:

class HelloWord{
public static void main(String[] args){
System.out.println("Hello world");
     }
}

我們對(duì)比一下,Kotlin 的代碼非常少。我們 Java 中,方法必須寫在類中,而我們的 Kotlin 支持包級(jí)函數(shù),靜態(tài)方法不需要寫在一個(gè)類中。并且 Kotlin 每一句結(jié)束不需要分號(hào)。

在 Kotlin 中,所有變量聲明都需要用 val 或 var 修飾,并且支持類型推斷,但你需要注意的是,Kotlin 是一個(gè)靜態(tài)語言。

變量聲明格式 : val/var 變量名(:類型,可不寫,會(huì)自動(dòng)推斷)

val i=1val i:Int =1 的效果是一樣的。

var i=1val i=1 如果被翻譯成 Java 分別就是:

final int i=1
int i=1

被 val 修飾的變量編譯后會(huì)被翻譯成類似于 java 中的 final 關(guān)鍵字,這是 Kotlin 一大特點(diǎn),在 Kotlin 中所有類,方法都會(huì)默認(rèn)是 final 的。

小編這邊建議您,初學(xué)的時(shí)候多看看 Kotlin 翻譯成 Java 的字節(jié)碼。 我們的 IDE 已經(jīng)有相關(guān)插件了:

enter image description here

點(diǎn)擊后會(huì)出現(xiàn)如圖界面:

enter image description here

再點(diǎn)擊紅色框中的按鈕,就會(huì)顯示我們 Kotlin 被翻譯成 Java 的代碼了。

優(yōu)秀的表達(dá)式

我們觀察以下代碼:

enter image description here

他和我們 Java 中的 if else 有哪些不同?

我們表達(dá)式也可以有返回值了,注意千萬不要寫 return xxx,因?yàn)?return 就跳出方法了。在 Kotlin 中,條件表達(dá)式的最后一句就可以作為返回值,這一個(gè)小技能可以說非常實(shí)用,類似的還有 try、catch 也有類似的功能。

加強(qiáng)版 switch

本人作為一名資深 Java 開發(fā)者,確很少用 switch,一來 switch 必須對(duì)相同類型進(jìn)行操作,功能單一,可能還沒有 if 強(qiáng)大,而且經(jīng)常使用會(huì)增加代碼耦合度,一般會(huì)使用多態(tài)結(jié)合相關(guān)的設(shè)計(jì)模式來代替。

我們來看看 Kotlin 中加強(qiáng)版的 switch 表達(dá)式 when:

enter image description here

當(dāng)滿足第一個(gè) case 分支,就會(huì)結(jié)束這個(gè)表達(dá)式。同理,他也可能作為一個(gè)表達(dá)式,每一個(gè)分支最后一句可以返回一個(gè)值,再給一個(gè)變量去接收,是不是比 switch 強(qiáng)大了一萬倍呢!

模板字符串

這個(gè)功能可是非常實(shí)用,我們?cè)?java 中可能常常會(huì)有拼接字符串的痛苦,沒事,Kotlin 可以解決你的這個(gè)痛苦,我們看看這個(gè)代碼:

enter image description here

我們?cè)谧址校褂?${},在花括號(hào)中,可以寫 Java 代碼,這樣就達(dá)到了模板字符串的效果。當(dāng)然你也可以這樣這樣做:

enter image description here

使用 $ 加上變量名可以直接輸出這個(gè)變量。那么我們?nèi)绻胼敵?$,那么就需要轉(zhuǎn)義了,和 Java 一樣,使用 \

包裝類和基本數(shù)據(jù)類型不存在了

在 Java 中類似 int、double 等等所有基本數(shù)據(jù)類型都有其對(duì)應(yīng)的包裝類,在 Kotlin 中不存在了,一律使用 Int、Double、Float、String……

在編譯的時(shí)候,Kotlin 會(huì)根據(jù)我們的情況智能選擇基本數(shù)據(jù)類型還是包裝類,不需要程序員去操心了。

data class,再見 Java bean

我們?cè)趯?JavaBean 一般過程是寫上一個(gè) class 類,里面編寫若干個(gè)字段,然后給上若干個(gè) get/set 方法,有時(shí)候還會(huì)重寫 toString、equals、HashCode 方法。

這些過程其實(shí)也有些重復(fù),如果我們使用 Kotlin 為我們提供的 data class 編寫一個(gè)類:

data class Person(val username:String,val age:Int)

這樣我們就寫好了一個(gè) data class,短短一句話,我們從聲明也可以看出,我們給 Person 這個(gè)類定義了 username 和 age 兩個(gè)屬性,我們使用 IDEA 自帶插件,把他翻譯成 Java 代碼看看:

public final class Person {    @NotNull    private final String
username;    private final int age;
 
   @NotNull    public final String getUsername() {
      return this.username;    }
 
   public final int getAge() {
      return this.age;    }
 
   public Person(@NotNull String username, int age) {
      Intrinsics.checkParameterIsNotNull(username, "username");
      super();
      this.username = username;
      this.age = age;    }
 
   @NotNull    public final String component1() {
      return this.username;    }
 
   public final int component2() {
      return this.age;    }
 
   @NotNull    public final Person copy(@NotNull String username, int
age) {
      Intrinsics.checkParameterIsNotNull(username, "username");
      return new Person(username, age);    }
 
   // $FF: synthetic method    // $FF: bridge method    @NotNull   
public static Person copy$default(Person var0, String var1, int var2,
int var3, Object var4) {
      if ((var3 & 1) != 0) {
         var1 = var0.username;
      }
 
      if ((var3 & 2) != 0) {
         var2 = var0.age;
      }
 
      return var0.copy(var1, var2);    }
 
   public String toString() {
      return "Person(username=" + this.username + ", age=" + this.age + ")";    }
 
   public int hashCode() {
      return (this.username != null ? this.username.hashCode() : 0) * 31 + this.age;    }
 
   public boolean equals(Object var1) {
      if (this != var1) {
         if (var1 instanceof Person) {
            Person var2 = (Person)var1;
            if (Intrinsics.areEqual(this.username, var2.username) && this.age == var2.age) {
               return true;
            }
         }
 
         return false;
      } else {
         return true;
      }    } }

data class 太厲害了,Kotlin 在編譯的時(shí)候會(huì)自動(dòng)幫我們加上 get/set 方法,還會(huì)為我們加上 tostring、euqals、hashcode 方法。

不過,你要注意的是,Kotlin 類默認(rèn)是 final 的,所以我的 data class 是不能被繼承的,而且他沒有無參的構(gòu)造方法。如果這樣直接使用 MyBatis 是會(huì)報(bào)這個(gè)類找不到無參構(gòu)造方法的錯(cuò)的。

為了解決這些問題,Kotlin 官方推薦了 no-arg 插件來解決這一問題,如果你想讓 data class 編譯時(shí)候去掉 final 關(guān)鍵字,可以使用 Kotlin 官方插件 all-open 插件來解決這一問題。

插句題外話,在 Spring5 中,Spring 專門針對(duì) Kotlin 做過很多的優(yōu)化。比如,AOP 這一底層實(shí)現(xiàn),相信有一定功底的人士都知道,spring 會(huì)為這個(gè)類使用 CGLIB 技術(shù)動(dòng)態(tài)生成一個(gè)子類。而我們的 Kotlin 類默認(rèn)是 final 的,因此,如果我們是用 Kotlin 寫的 AOP,想讓我們寫的 AOP 類能正常運(yùn)行,就必須在 class 前面加上 open??擅看螌懞苈闊覀兯饕俜揭餐瞥隽艘粋€(gè) kotlin-spring 插件,可以為這些類自動(dòng)去 final 關(guān)鍵字。

空指針異常不存在了

Kotlin 中所有類型都區(qū)分非空或可空類型,比如可空的 Int,就是 Int?,如果這個(gè)類型允許空,我們就在這個(gè)類型后面加個(gè) ?,不加 ? 的話則這個(gè)類型不可為空!

比如我們定義一個(gè)方法某一個(gè)參數(shù)類型后面我們就指定了 ?,我們可以傳遞 Null,反之則不可以,或者加上 ! 強(qiáng)制傳遞。

Kotlin 的絕技實(shí)在是太多了,包括還有定義方法的時(shí)候,我可以給參數(shù)指定默認(rèn)值,調(diào)用的時(shí)候也可以指定參數(shù)名的時(shí)候進(jìn)行傳遞,在編譯時(shí)候,Kotlin 會(huì)生成若干個(gè)重載的 Java 方法。當(dāng)然這只是九牛一毛,Kotlin 最強(qiáng)大的就是高階函數(shù)和函數(shù)式編程了,并且支持科理化。支持運(yùn)算符重載,可以為類增加擴(kuò)展方法,強(qiáng)大到令人發(fā)指。

同時(shí),Kotlin 還支持協(xié)和編程(目前這塊不太成熟),由于篇幅有限,如果大家有興趣,我可以再做一次專題講解。

編寫單例類

單例模式是 23 種設(shè)計(jì)模式中非常常用的設(shè)計(jì)模式之一。在 Kotlin 中也有提供我們非??旖莸姆绞骄帉憜卫悾瑢?shí)現(xiàn)單例僅僅只需要一行代碼:

object Singleton

是的,你沒有看錯(cuò),只需要寫2個(gè)單詞 ,object 代表聲明一個(gè)單例類,Singleton 為單例的類名,是不是很Easy?

我們測(cè)試一下:

enter image description here

這里補(bǔ)充一下,由于 Kotlin 支持運(yùn)算符重載,在 Kotlin 中,雙等號(hào)等同于調(diào)用 equals 方法,三等號(hào)才是比較內(nèi)存地址。我們看到這里輸出的是 true,則說明,輸出的是同一個(gè)對(duì)象。我們?cè)賮砜纯此止?jié)碼,翻譯成 Java 的代碼:

enter image description here

可以看出,就是一個(gè)簡(jiǎn)單的單例模式。構(gòu)造方法沒有顯示出來,其實(shí)是私有化的。其實(shí)我們還是可以通過反射去修改構(gòu)造方法訪問修飾符來破壞他的單例的。

擴(kuò)展方法

相信如果你做過多年的 Java 開發(fā),手頭上一定有大量的 Util 類,比如 DateUtils、HtmlUtils、StringUtils 等等,其實(shí)這都是 Java 這門語言造成的,當(dāng)你學(xué)會(huì)擴(kuò)展方法后,從此告別 Util。

比如我們要判斷一個(gè)字符串是否長(zhǎng)度大于 0,我們無非要判斷他不為 null,且長(zhǎng)度大于 0,如果用 Java 去實(shí)現(xiàn)相信你一定會(huì)寫一個(gè) StringUtils,那么我們?nèi)绾斡?Kotlin 的擴(kuò)展方法去實(shí)現(xiàn)呢?

我們?yōu)?String 擴(kuò)展一個(gè) isNullOrEmpty 方法,如何返回 false,則說明長(zhǎng)度大于 0。

我們?cè)诙x方法的時(shí)候前面加上對(duì)應(yīng)的類名即可變成擴(kuò)展方法了。

fun String.isNullOrEmpty():Boolean{
    return !(this!=null&& this.isNotEmpty())
}

這個(gè)代碼可以寫在任何地方。

我們寫測(cè)試類調(diào)用:

enter image description here

是不是很自然。向 Util 說再見吧!其實(shí)我們的 Kotlin 在 String 類,集合類,IO 類等 JDK 很多類都提供了大量的擴(kuò)展方法,比如我們學(xué)一個(gè)文本文件,現(xiàn)在只需要一句話:

val file = System.IO.File("d:/1.txt")
    println(file.readText())

readText 就是 Kotlin 為我們寫的擴(kuò)展方法,類似的其實(shí)還有很多。因此,使用 Kotlin 一定會(huì)大大提高你的工作效率。

運(yùn)算符重載

在 Kotlin 中,每一個(gè)運(yùn)行符對(duì)應(yīng)一個(gè)該類中的方法,如果該類中有相應(yīng)的方法實(shí)現(xiàn),就可以進(jìn)行運(yùn)算符重載。

就連調(diào)用方法其實(shí)也是一樣,比如我們調(diào)用 a(b),等同于 a.invoke(b)

表達(dá)式 對(duì)應(yīng)轉(zhuǎn)換
a + b a.plus(b)
a - b a.minus(b)
a * b a.times(b)
a / b a.div(b)
a % b a.mod(b)
a..b a.rangeTo(b)
a[i] a.get(i)
a[i, j] a.get(i, j)
a[i_1, …, i_n] a.get(i_1, … , i_n)
a[i] = b a.set(i, b)
a[i,j] =b a.set(i, j, b)
a[i_1, … , i_n] = b a.set(i_1,… ,o_n,b)
a in b b.contains(a)
a !in b !b.contains(a)
a[i] a.get(i)
a[i, j] a.get(i, j)
a[i_1, …, i_n] a.get(i_1, … , i_n)
a[i] = b a.set(i, b)
a[i,j] =b a.set(i, j, b)
a[i_1, … , i_n] = b a.set(i_1,… ,o_n,b)

我們舉個(gè)例子,假如我們要計(jì)算一個(gè)日期后的若干天,我們?nèi)绻?Java 去干,相信你一定要寫不少于 10 行代碼,而且會(huì)很痛苦。而在 Kotlin 中,有了運(yùn)算符重載,我就有了一個(gè)很好的思路,讓 data+1 就返回一天后的日期,是不是很絕?

說到做到,我們來實(shí)現(xiàn):

根據(jù)上面表我們可以看出,+ 要重載的方法是 plus??墒?Date 類是 JDK 為我們提供的,我們?nèi)绾稳樗砑右粋€(gè)方法呢?沒錯(cuò),我們之前講過,Kotlin 支持類的擴(kuò)展方法,我們?yōu)?Date 類擴(kuò)展一個(gè) plus 方法,擴(kuò)展方法和運(yùn)算符重載結(jié)合起來也會(huì)被識(shí)別。

對(duì)了,重點(diǎn)還沒有說,如何定義運(yùn)算符重載呢??jī)H僅寫對(duì)應(yīng)的方法還不足夠,還要在 fun 前面加上 operator 關(guān)鍵字。所以,我們寫出如下代碼:

operator fun Date.plus(nextVal:Int):Date{
    val calendar = GregorianCalendar()
    calendar.time = this
    calendar.add(Calendar.DATE, nextVal)
    return calendar.time
}

為了方便查看日期字符串,我們?cè)贁U(kuò)展一個(gè) stringFormat 方法,由于"yyyy-MM-dd"格式太常用,我們?cè)俳o他一個(gè)默認(rèn)值。

fun Date.stringFormat(formatType:String = "yyyy-MM-dd"):String{
    return SimpleDateFormat(formatType).format(this)
}

寫測(cè)試方法:

enter image description here

絕了,不得不感嘆 Kotlin 的偉大!

四、Kotlin 與 Java 混合開發(fā)

由于 Kotlin 和 Java 編譯成 class 文件后完成一樣,所以 Kotlin 和 Java 有著天然的兼容性,100% 兼容。在 Kotlin 中你可以隨意的去使用 JVM 中定義好的類,也可以是你自己寫好的 Java 類,同一個(gè)項(xiàng)目中你可以既有 Java 類,也可以有 Kotlin 類。

比如你定義了一個(gè) data class Person 類,在同一個(gè)項(xiàng)目中,你可以新建一個(gè) Java 類,使用 Person person = new Person(“小明”,12); 這完全沒有問題的。同樣,你用 Kotlin 定義好的類,在 Java 中可以同樣使用。所在,從現(xiàn)在開始使用 Kotlin,不要怕,即使有地方你擔(dān)心 Kotlin 自己不熟悉而實(shí)現(xiàn)不了,那你也可以在這時(shí)候使用 Java 去實(shí)現(xiàn)。100% 兼容,Java 中的所有類庫都可以去使用。

這里附上一張 Kotlin 使用 SSM 圖:

enter image description here

可以看出,源碼是 Kotlin 的,我們同樣可以使用 Spring 框架,再附上這個(gè)項(xiàng)目源文件。

enter image description here

文件前面圖標(biāo)右下角帶 K 的都是 Kotlin 文件,可見,Kotlin 和 Java 是非常好的。

那么,像擴(kuò)展方法、運(yùn)算符重載、默認(rèn)參數(shù)這類的我們?cè)撚?Java 如何去調(diào)用呢?

這里有很遺憾了,由于 Java 語法的限制我們不能像 Kotlin 那樣去使用,但這并不代表我們不能用 Java 去調(diào)用,我們?cè)?Java 中,只能當(dāng)成一個(gè)普通方法去使用了。

五、Kotlin 與 Java 總結(jié)

個(gè)人認(rèn)為 Kotlin 取代 Java 只是時(shí)間問題,現(xiàn)如今 Java 的更新速度已經(jīng)很緩慢了,已經(jīng)有越來越多的 Java 開發(fā)者去轉(zhuǎn)戰(zhàn) Kotlin 這門語言。即使你現(xiàn)在的項(xiàng)目已經(jīng)用 Java 寫的很多,從今天開始你也可以使用 Kotlin,與 Java 百分之一百兼容,這是他的最大的特點(diǎn)。在未來,Kotlin 也必定會(huì)走出 JVM 這個(gè)平臺(tái),準(zhǔn)確說,現(xiàn)在已經(jīng)邁出了,未來會(huì)越來越強(qiáng)大。

到此這篇關(guān)于入門 Kotlin 和 Java 混合開發(fā)的文章就介紹到這了,更多相關(guān)Kotlin 和 Java 混合開發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java設(shè)計(jì)模式之策略模式詳解和示例

    Java設(shè)計(jì)模式之策略模式詳解和示例

    這篇文章主要介紹了Java設(shè)計(jì)模式之策略模式詳解和示例,策略模式就是一種行為可能會(huì)因?yàn)椴煌倪壿嬙斐啥鄠€(gè)算法,比如人吃飯,美國人吃飯用刀叉,中國吃飯用筷子,都是吃飯的行為但是使用的工具(算法)不一樣,需要的朋友可以參考下
    2024-01-01
  • Nacos啟動(dòng)出現(xiàn)failed to req API:/nacos/v1/ns/instance after all servers問題

    Nacos啟動(dòng)出現(xiàn)failed to req API:/nacos/v1/ns/insta

    這篇文章主要介紹了Nacos啟動(dòng)出現(xiàn)failed to req API:/nacos/v1/ns/instance after all servers問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 淺談java里的EL表達(dá)式在JSP中不能解析的問題

    淺談java里的EL表達(dá)式在JSP中不能解析的問題

    下面小編就為大家?guī)硪黄獪\談java里的EL表達(dá)式在JSP中不能解析的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java實(shí)現(xiàn)的簡(jiǎn)易記事本

    Java實(shí)現(xiàn)的簡(jiǎn)易記事本

    這篇文章主要介紹了Java實(shí)現(xiàn)的簡(jiǎn)易記事本,較為詳細(xì)的分析了基于java實(shí)現(xiàn)記事本程序的完整過程,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Maven高級(jí)的聚合和繼承的實(shí)現(xiàn)

    Maven高級(jí)的聚合和繼承的實(shí)現(xiàn)

    在軟件開發(fā)中,隨著項(xiàng)目規(guī)模的擴(kuò)大,單個(gè)模塊的開發(fā)方式逐漸轉(zhuǎn)變?yōu)槎嗄K開發(fā),這種方式帶來了項(xiàng)目管理上的挑戰(zhàn),其中最常見的問題是模塊間的依賴管理和版本控制問題,本文就來介紹一下
    2024-10-10
  • springboottest測(cè)試依賴和使用方式

    springboottest測(cè)試依賴和使用方式

    這篇文章主要介紹了springboottest測(cè)試依賴和使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • JSON字符串中獲取一個(gè)指定字段的值四種方式

    JSON字符串中獲取一個(gè)指定字段的值四種方式

    在Java開發(fā)中,我們經(jīng)常會(huì)遇到需要從JSON數(shù)據(jù)中提取特定字段值的情況,這篇文章主要給大家介紹了關(guān)于JSON字符串中獲取一個(gè)指定字段的值四種方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • 利用Java實(shí)現(xiàn)天氣預(yù)報(bào)播報(bào)功能

    利用Java實(shí)現(xiàn)天氣預(yù)報(bào)播報(bào)功能

    這篇文章主要為大家介紹了如何利用Java語言實(shí)現(xiàn)天氣預(yù)報(bào)播報(bào)功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下
    2022-06-06
  • Maven的porfile與SpringBoot的profile結(jié)合使用案例詳解

    Maven的porfile與SpringBoot的profile結(jié)合使用案例詳解

    這篇文章主要介紹了Maven的porfile與SpringBoot的profile結(jié)合使用,通過maven的profile功能,在打包的時(shí)候,通過-P指定maven激活某個(gè)pofile,這個(gè)profile里面配置了一個(gè)參數(shù)activatedProperties,不同的profile里面的這個(gè)參數(shù)的值不同,需要的朋友可以參考下吧
    2021-12-12
  • Java基礎(chǔ)教程之?dāng)?shù)組的定義與使用

    Java基礎(chǔ)教程之?dāng)?shù)組的定義與使用

    Java語言的數(shù)組是一個(gè)由固定長(zhǎng)度的特定類型元素組成的集合,它們的數(shù)據(jù)類型必須相同,聲明變量的時(shí)候,必須要指定參數(shù)類型,這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)教程之?dāng)?shù)組的定義與使用的相關(guān)資料,需要的朋友可以參考下
    2021-09-09

最新評(píng)論