在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ Kotlin編譯器插件
Kotlin內聯函數
Kotlin開發(fā)環(huán)境設置(Eclipse)
Kotlin調用Java代碼
Kotlin使用Ant
Kotlin編譯器插件
Kotlin相等性
Kotlin JavaScript模塊
編寫Kotlin代碼文檔
Kotlin返回和跳轉
Kotlin異常處理
Kotlin可見性修飾符
Kotlin委托
Kotlin委托屬性
Kotlin編碼約定/編碼風格
Kotlin基礎語法
使用Kotlin進行服務器端開發(fā)
Kotlin接口
Kotlin反射
Kotlin類型別名
Kotlin枚舉類
Kotlin當前版本是多少?
Kotlin注解處理工具
Kotlin類型的檢查與轉換
Kotlin屬性和字段
Kotlin類型安全的構建器
Kotlin相比Java語言有哪些優(yōu)點?
Kotlin JavaScript反射
Kotlin 是什么?
Kotlin泛型
Kotlin慣用語法
Kotlin與OSGi
Kotlin數據類型
Kotlin是面向對象還是函數式語言?
Kotlin動態(tài)類型
Kotlin協(xié)程
Kotlin操作符符重載
Kotlin使用Gradle
Kotlin密封類
Kotlin兼容性
Kotlin集合
Kotlin調用JavaScript
Kotlin null值安全
Kotlin函數
Kotlin開發(fā)環(huán)境設置(IntelliJ IDEA)
Kotlin嵌套類
Kotlin控制流程
Kotlin和Java語言比較
Kotlin 與 Java 語言兼容嗎?
Kotlin教程
Kotlin類和繼承
Kotlin對象表達式和對象聲明
JavaScript中調用Kotlin
Kotlin區(qū)間/范圍
Kotlin數據類
Kotlin lambda表達式
Kotlin是免費的嗎?
Kotlin包
使用Kotlin進行Android開發(fā)
在Java中調用Kotlin代碼
Kotlin this表達式
使用Kotlin進行JavaScript開發(fā)
Kotlin擴展
Kotlin解構聲明
Kotlin注解
Kotlin使用Maven

Kotlin編譯器插件

全開放編譯器插件

Kotlin 有類及其默認為 final 的成員,這使得像 Spring AOP 這樣需要類為 open 的框架和庫用起來很不方便。
這個 all-open 編譯器插件會適配 Kotlin 以滿足那些框架的需求,并使用指定的注解標注類而其成員無需顯式使用 open 關鍵字打開。
例如,當你使用 Spring 時,你不需要打開所有的類,而只需要使用特定的注解標注,如
@Configuration@Service。
all-open 插件允許指定這些注解。

我們?yōu)槿_放插件提供 Gradle 和 Maven 以及 IDE 集成的支持。
對于 Spring,你可以使用 kotlin-spring 編譯器插件(見下文)。

如何使用全開放插件

build.gradle 中添加插件:

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
    }
}

apply plugin: "kotlin-allopen"

或者,如果你使用 Gradle 插件 DSL,將其添加到 plugins 塊:

plugins {
  id "org.jetbrains.kotlin.plugin.allopen" version "<使用的版本>"
}

然后指定會打開該類的注解:

allOpen {
    annotation("com.my.Annotation")
}

如果類(或任何其超類)標有 com.my.Annotation 注解,類本身及其所有成員會變?yōu)殚_放。

它也適用于元注解:

@com.my.Annotation
annotation class MyFrameworkAnnotation

@MyFrameworkAnnotation
class MyClass // 將會全開放

MyFrameworkAnnotation 也是使類打開的注解,因為它標有 com.my.Annotation 注解。

下面是全開放與 Maven 一起使用的用法:

<plugin>
    <artifactId>kotlin-maven-plugin</artifactId>
    <groupId>org.jetbrains.kotlin</groupId>
    <version>${kotlin.version}</version>

    <configuration>
        <compilerPlugins>
            <!-- 或者 "spring" 對于 Spring 支持 -->
            <plugin>all-open</plugin>
        </compilerPlugins>

        <pluginOptions>
            <!-- 每個注解都放在其自己的行上 -->
            <option>all-open:annotation=com.my.Annotation</option>
            <option>all-open:annotation=com.their.AnotherAnnotation</option>
        </pluginOptions>
    </configuration>

    <dependencies>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-allopen</artifactId>
            <version>${kotlin.version}</version>
        </dependency>
    </dependencies>
</plugin>

Kotlin-spring 編譯器插件

你無需手動指定 Spring 注解,你可以使用 kotlin-spring 插件,它根據 Spring 的要求自動配置全開放插件。

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
    }
}

apply plugin: "kotlin-spring"

或者使用 Gradle 插件 DSL:

plugins {
  id "org.jetbrains.kotlin.plugin.spring" version "<使用的版本>"
}

其 Maven 示例與上面的類似。

該插件指定了以下注解:
@Component
@Async、
@Transactional
@Cacheable。
由于元注解的支持,標注有 @Configuration、 @Controller、 @RestController@Service 或者 @Repository 的類會自動打開,因為這些注解標注有元注解 @Component。

當然,你可以在同一個項目中同時使用 kotlin-allopenkotlin-spring
請注意,如果你使用 start.spring.iokotlin-spring 插件將默認啟用。

無參編譯器插件

無參(no-arg)編譯器插件為具有特定注解的類生成一個額外的零參數構造函數。
這個生成的構造函數是合成的,因此不能從 Java 或 Kotlin 中直接調用,但可以使用反射調用。
這允許 Java Persistence API(JPA)實例化 data 類,雖然它從 Kotlin 或 Java 的角度看沒有無參構造函數(參見下面kotlin-jpa 插件的描述)。

如何使用無參插件

其用法非常類似于全開放插件。
添加該插件并指定注解的列表,這些注解一定會導致被標注的類生成無參構造函數。

在 Gradle 中使用無參插件方法:

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
    }
}

apply plugin: "kotlin-noarg"

或者使用 Gradle 插件 DSL:

plugins {
  id "org.jetbrains.kotlin.plugin.noarg" version "<使用的版本>"
}

然后指定注解類型:

noArg {
    annotation("com.my.Annotation")
}

在 Maven 中使用無參插件方法:

<plugin>
    <artifactId>kotlin-maven-plugin</artifactId>
    <groupId>org.jetbrains.kotlin</groupId>
    <version>${kotlin.version}</version>

    <configuration>
        <compilerPlugins>
            <!-- 或者 "jpa" 對于 JPA 支持 -->
            <plugin>no-arg</plugin>
        </compilerPlugins>

        <pluginOptions>
            <option>no-arg:annotation=com.my.Annotation</option>
        </pluginOptions>
    </configuration>

    <dependencies>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-noarg</artifactId>
            <version>${kotlin.version}</version>
        </dependency>
    </dependencies>
</plugin>

Kotlin-jpa 編譯器插件

該插件指定
@Entity
@Embeddable
注解作為應該為一個類生成無參構造函數的標記。
這就是如何在 Gradle 中添加該插件的方法:

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
    }
}

apply plugin: "kotlin-jpa"

或者使用 Gradle 插件 DSL:

plugins {
  id "org.jetbrains.kotlin.plugin.jpa" version "<使用的版本>"
}

其 Maven 示例與上面的類似。