欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java中符號(hào)@的作用及用法舉例詳解

 更新時(shí)間:2025年04月12日 10:32:55   作者:時(shí)雨h  
在Java編程語(yǔ)言中,@符號(hào)被稱(chēng)為注解(Annotation),下面這篇文章主要介紹了java中符號(hào)@的作用及用法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在Java中,@ 符號(hào)用來(lái)表示注解(Annotation)。注解是Java 5.0版本引入的一個(gè)特性,它提供了一種安全的為程序元素(類(lèi)、方法、變量等)添加元數(shù)據(jù)的方式。注解本身不會(huì)直接影響程序的邏輯,但是它們可以被編譯器、工具或運(yùn)行時(shí)環(huán)境用來(lái)處理代碼,從而實(shí)現(xiàn)特定的功能。

注解通常用于以下幾個(gè)方面:

  • 編譯時(shí)檢查:某些注解可以幫助編譯器驗(yàn)證代碼的正確性,例如 @Override 注解可以確保你重寫(xiě)的方法確實(shí)存在于父類(lèi)中。
  • 編譯時(shí)處理:一些注解可以在編譯時(shí)被處理,生成額外的源文件或者修改字節(jié)碼,例如使用注解處理器來(lái)自動(dòng)生成代碼。
  • 運(yùn)行時(shí)處理:部分注解可以在運(yùn)行時(shí)通過(guò)反射機(jī)制來(lái)讀取,并據(jù)此執(zhí)行特定的邏輯,比如Spring框架中的 @Autowired 注解用于自動(dòng)裝配依賴(lài)。
  • 文檔生成:注解也可以用來(lái)生成文檔,如 @Deprecated 注解表示某個(gè)程序元素已經(jīng)過(guò)時(shí),不應(yīng)該再使用。

常見(jiàn)的內(nèi)置注解包括:

  • @Override:用于標(biāo)記方法覆蓋的情況。
  • @Deprecated:標(biāo)記已棄用的方法或類(lèi)。
  • @SuppressWarnings:用于抑制編譯器警告。

自定義注解可以通過(guò) @interface 關(guān)鍵字來(lái)創(chuàng)建,自定義注解可以帶有成員,這些成員在使用注解時(shí)提供必要的信息。

示例:

public @interface MyAnnotation {
    String value() default "default value";
}

@MyAnnotation(value = "Hello, World!")
public class MyClass {
    // 類(lèi)的內(nèi)容
}

在這個(gè)例子中,MyAnnotation 是一個(gè)自定義注解,它有一個(gè)名為 value 的成員,默認(rèn)值為 "default value"。MyClass 類(lèi)上應(yīng)用了這個(gè)注解,并指定了 value 成員的具體值。

1. 定義注解

注解本質(zhì)上是一個(gè)接口,但它的聲明方式與普通接口不同。定義注解使用 @interface 關(guān)鍵字。注解可以有成員,這些成員類(lèi)似于接口的方法,但有一些限制,例如成員類(lèi)型只能是基本類(lèi)型、字符串、類(lèi)、枚舉、注解或上述類(lèi)型的數(shù)組。

示例:定義一個(gè)簡(jiǎn)單的注解

public @interface MyAnnotation {
    String value() default "";  // 默認(rèn)值為空字符串
    int count() default 1;      // 默認(rèn)值為1
}

2. 注解的元注解

元注解是用于修飾注解的注解。Java 提供了一些標(biāo)準(zhǔn)的元注解:

  • @Retention:指定注解的保留策略。
  • @Target:指定注解可以應(yīng)用的目標(biāo)類(lèi)型。
  • @Documented:指定注解是否應(yīng)該包含在 JavaDoc 中。
  • @Inherited:指定注解是否可以被子類(lèi)繼承。

示例:使用元注解

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)  // 注解在運(yùn)行時(shí)保留
@Target(ElementType.METHOD)         // 注解可以應(yīng)用于方法
public @interface MyAnnotation {
    String value() default "";
    int count() default 1;
}

3. 注解的保留策略

@Retention 元注解用于指定注解的保留策略,即注解在哪個(gè)階段有效。主要有三種保留策略:

  • RetentionPolicy.SOURCE:注解僅保留在源代碼級(jí)別,編譯時(shí)會(huì)被忽略。
  • RetentionPolicy.CLASS:注解保留在類(lèi)文件中,但不會(huì)被加載到 JVM 中。
  • RetentionPolicy.RUNTIME:注解保留在 JVM 中,可以在運(yùn)行時(shí)通過(guò)反射獲取。

4. 注解的應(yīng)用目標(biāo)

@Target 元注解用于指定注解可以應(yīng)用的目標(biāo)類(lèi)型。常見(jiàn)的目標(biāo)類(lèi)型包括:

  • ElementType.TYPE:類(lèi)、接口(包括注解類(lèi)型)或枚舉聲明。
  • ElementType.FIELD:字段、枚舉常量。
  • ElementType.METHOD:方法。
  • ElementType.PARAMETER:參數(shù)。
  • ElementType.CONSTRUCTOR:構(gòu)造方法。
  • ElementType.LOCAL_VARIABLE:局部變量。
  • ElementType.ANNOTATION_TYPE:注解類(lèi)型。
  • ElementType.PACKAGE:包聲明。

5. 運(yùn)行時(shí)處理注解

在運(yùn)行時(shí)處理注解通常需要使用反射機(jī)制。通過(guò)反射,可以獲取類(lèi)、方法、字段等上的注解,并讀取注解的成員值。

示例:運(yùn)行時(shí)處理注解

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Method;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation {
    String value() default "";
    int count() default 1;
}

public class MyClass {
    @MyAnnotation(value = "Hello", count = 5)
    public void myMethod() {
        System.out.println("This is my method.");
    }
}

public class Main {
    public static void main(String[] args) throws Exception {
        Method method = MyClass.class.getMethod("myMethod");
        if (method.isAnnotationPresent(MyAnnotation.class)) {
            MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
            System.out.println("Value: " + annotation.value());
            System.out.println("Count: " + annotation.count());
        }
    }
}

6. 內(nèi)置注解

Java 提供了一些內(nèi)置注解,用于常見(jiàn)的編程場(chǎng)景:

  • @Override:表示方法覆蓋。
  • @Deprecated:表示方法或類(lèi)已棄用。
  • @SuppressWarnings:用于抑制編譯器警告。

7. 自定義注解處理器

注解處理器是一種在編譯時(shí)處理注解的工具。通過(guò)注解處理器,可以在編譯時(shí)生成額外的源代碼或進(jìn)行其他操作。Java 提供了 javax.annotation.processing 包來(lái)支持注解處理器的開(kāi)發(fā)。

示例:定義一個(gè)簡(jiǎn)單的注解處理器

import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.RoundEnvironment;
import javax.annotation.processing.SupportedAnnotationTypes;
import javax.annotation.processing.SupportedSourceVersion;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.TypeElement;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Set;

@SupportedAnnotationTypes("com.example.MyAnnotation")
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public class MyAnnotationProcessor extends AbstractProcessor {
    @Override
    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
        for (TypeElement annotation : annotations) {
            Set<? extends Element> annotatedElements = roundEnv.getElementsAnnotatedWith(annotation);
            for (Element element : annotatedElements) {
                try (PrintWriter out = new PrintWriter(processingEnv.getFiler().createSourceFile(element.getSimpleName() + "Generated").openWriter())) {
                    out.println("public class " + element.getSimpleName() + "Generated {");
                    out.println("    public void generatedMethod() {");
                    out.println("        System.out.println(\"This is a generated method.\");");
                    out.println("    }");
                    out.println("}");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return true;
    }
}

8. 注解的應(yīng)用場(chǎng)景

注解在現(xiàn)代Java開(kāi)發(fā)中非常常見(jiàn),尤其是在框架和庫(kù)中。以下是一些典型的應(yīng)用場(chǎng)景:

  • 依賴(lài)注入:如Spring框架中的 @Autowired。
  • 單元測(cè)試:如JUnit中的 @Test
  • Web框架:如Spring MVC中的 @RequestMapping。
  • 持久化框架:如Hibernate中的 @Entity 和 @Table
  • 配置管理:如Spring Boot中的 @Configuration 和 @Bean。當(dāng)然可以!我們繼續(xù)深入探討Java注解的高級(jí)特性和應(yīng)用場(chǎng)景。

9. 注解的組合使用

在實(shí)際開(kāi)發(fā)中,注解經(jīng)常被組合使用,以實(shí)現(xiàn)更復(fù)雜的功能。例如,Spring框架中的 @RestController 實(shí)際上是一個(gè)組合注解,它包含了 @Controller 和 @ResponseBody。

示例:定義一個(gè)組合注解

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyCustomController {
    @MyAnnotation
    Class<?> value();
}

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotation {
    String value() default "";
}

@MyCustomController(value = MyClass.class)
public class MyClass {
    // 類(lèi)的內(nèi)容
}

10. 注解的默認(rèn)值

注解的成員可以有默認(rèn)值,這使得在使用注解時(shí)可以省略這些成員的顯式賦值。

示例:帶有默認(rèn)值的注解

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation {
    String value() default "default value";
    int count() default 1;
}

public class MyClass {
    @MyAnnotation
    public void myMethod() {
        System.out.println("This is my method.");
    }
}

11. 重復(fù)注解

從Java 8開(kāi)始,引入了重復(fù)注解的概念。允許在一個(gè)地方多次使用同一個(gè)注解。

示例:定義和使用重復(fù)注解

import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotations {
    MyAnnotation[] value();
}

@Repeatable(MyAnnotations.class)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation {
    String value() default "";
}

public class MyClass {
    @MyAnnotation(value = "First")
    @MyAnnotation(value = "Second")
    public void myMethod() {
        System.out.println("This is my method.");
    }
}

public class Main {
    public static void main(String[] args) throws Exception {
        Method method = MyClass.class.getMethod("myMethod");
        if (method.isAnnotationPresent(MyAnnotations.class)) {
            MyAnnotations annotations = method.getAnnotation(MyAnnotations.class);
            for (MyAnnotation annotation : annotations.value()) {
                System.out.println("Value: " + annotation.value());
            }
        } else if (method.isAnnotationPresent(MyAnnotation.class)) {
            MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
            System.out.println("Value: " + annotation.value());
        }
    }
}

12. 注解的繼承

雖然注解本身不能繼承,但可以通過(guò) @Inherited 元注解使注解具有繼承性。這意味著如果一個(gè)類(lèi)使用了某個(gè)注解,那么它的子類(lèi)也會(huì)繼承該注解。

示例:使用 @Inherited 元注解

import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotation {
    String value() default "";
}

@MyAnnotation(value = "Parent")
public class ParentClass {
    // 類(lèi)的內(nèi)容
}

public class ChildClass extends ParentClass {
    // 類(lèi)的內(nèi)容
}

public class Main {
    public static void main(String[] args) {
        Class<?> clazz = ChildClass.class;
        if (clazz.isAnnotationPresent(MyAnnotation.class)) {
            MyAnnotation annotation = clazz.getAnnotation(MyAnnotation.class);
            System.out.println("Value: " + annotation.value());
        }
    }
}

13. 注解在框架中的應(yīng)用

注解在許多流行的Java框架中廣泛使用,以下是一些典型的應(yīng)用場(chǎng)景:

  • Spring框架
    • @Autowired:自動(dòng)注入依賴(lài)。
    • @Controller / @RestController:標(biāo)識(shí)控制器類(lèi)。
    • @Service:標(biāo)識(shí)服務(wù)層類(lèi)。
    • @Repository:標(biāo)識(shí)數(shù)據(jù)訪問(wèn)層類(lèi)。
    • @Transactional:管理事務(wù)。
  • Hibernate
    • @Entity:標(biāo)識(shí)實(shí)體類(lèi)。
    • @Table:指定表名。
    • @Column:指定列名。
    • @Id:標(biāo)識(shí)主鍵。
  • JUnit
    • @Test:標(biāo)識(shí)測(cè)試方法。
    • @Before / @After:標(biāo)識(shí)在每個(gè)測(cè)試方法前/后執(zhí)行的方法。
    • @BeforeClass / @AfterClass:標(biāo)識(shí)在所有測(cè)試方法前/后執(zhí)行的方法。
  • Servlet 3.0+
    • @WebServlet:標(biāo)識(shí)Servlet。
    • @WebFilter:標(biāo)識(shí)過(guò)濾器。
    • @WebListener:標(biāo)識(shí)監(jiān)聽(tīng)器。

14. 注解的性能影響

注解本身不會(huì)對(duì)程序的性能產(chǎn)生顯著影響,因?yàn)樗鼈冎皇窃獢?shù)據(jù)。然而,如果在運(yùn)行時(shí)頻繁地使用反射來(lái)處理注解,可能會(huì)對(duì)性能產(chǎn)生一定的影響。因此,在設(shè)計(jì)時(shí)應(yīng)權(quán)衡注解的使用頻率和性能需求。

15. 最佳實(shí)踐

  • 簡(jiǎn)潔明了:注解應(yīng)該簡(jiǎn)潔明了,避免過(guò)于復(fù)雜的邏輯。
  • 合理使用:注解不應(yīng)替代傳統(tǒng)的編程邏輯,而應(yīng)作為輔助手段。
  • 文檔化:注解的使用應(yīng)該有良好的文檔說(shuō)明,以便其他開(kāi)發(fā)者理解其用途。
  • 性能考慮:避免在性能敏感的代碼路徑中頻繁使用反射來(lái)處理注解。

java注解的最佳實(shí)踐

Java注解的使用非常靈活,但為了確保代碼的可維護(hù)性和性能,遵循一些最佳實(shí)踐是非常重要的。以下是一些關(guān)于如何有效使用Java注解的最佳實(shí)踐:

1. 保持注解簡(jiǎn)單和明確

  • 簡(jiǎn)潔性:注解應(yīng)該盡量簡(jiǎn)潔,避免過(guò)多的成員和復(fù)雜的邏輯。
  • 命名清晰:注解名稱(chēng)應(yīng)該清晰、有意義,能夠一眼看出其用途。

2. 使用元注解

  • 保留策略:使用 @Retention 指定注解的保留策略。通常情況下,如果注解只用于編譯時(shí)檢查,可以選擇 SOURCE;如果需要在運(yùn)行時(shí)處理注解,選擇 RUNTIME。
  • 目標(biāo)類(lèi)型:使用 @Target 指定注解可以應(yīng)用的目標(biāo)類(lèi)型,確保注解在合適的上下文中使用。
  • 文檔化:使用 @Documented 將注解包含在生成的JavaDoc中,提高代碼的可讀性和可維護(hù)性。
  • 繼承性:使用 @Inherited 使注解具有繼承性,適用于需要子類(lèi)繼承父類(lèi)注解的場(chǎng)景。

3. 避免過(guò)度使用注解

  • 適度使用:注解不應(yīng)該替代傳統(tǒng)的編程邏輯,而是作為輔助手段。過(guò)度使用注解會(huì)增加代碼的復(fù)雜性和維護(hù)難度。
  • 避免冗余:不要在沒(méi)有必要的情況下重復(fù)使用相同的注解,避免冗余和混亂。

4. 使用默認(rèn)值

  • 默認(rèn)值:為注解成員提供合理的默認(rèn)值,這樣在使用注解時(shí)可以省略不必要的參數(shù),使代碼更加簡(jiǎn)潔。

5. 文檔化注解

  • 注釋:為注解及其成員添加詳細(xì)的注釋?zhuān)忉屍溆猛竞褪褂梅椒ā?/li>
  • 示例:提供注解使用的示例,幫助其他開(kāi)發(fā)者理解如何正確使用注解。

6. 性能考慮

  • 反射使用:避免在性能敏感的代碼路徑中頻繁使用反射來(lái)處理注解??梢钥紤]緩存注解的處理結(jié)果,減少重復(fù)的反射調(diào)用。
  • 編譯時(shí)處理:如果可能,使用注解處理器在編譯時(shí)處理注解,生成額外的源代碼或進(jìn)行其他優(yōu)化。

7. 組合注解

  • 組合使用:合理使用組合注解,將多個(gè)相關(guān)的注解組合成一個(gè),簡(jiǎn)化注解的使用。
  • 一致性:確保組合注解的一致性和語(yǔ)義清晰,避免混淆。

8. 測(cè)試注解

  • 單元測(cè)試:編寫(xiě)單元測(cè)試來(lái)驗(yàn)證注解的行為和效果,確保注解按預(yù)期工作。
  • 集成測(cè)試:在集成測(cè)試中驗(yàn)證注解在實(shí)際應(yīng)用中的表現(xiàn),確保沒(méi)有遺漏或錯(cuò)誤。

9. 遵循框架的最佳實(shí)踐

  • 框架規(guī)范:在使用框架提供的注解時(shí),遵循框架的最佳實(shí)踐和推薦用法。
  • 擴(kuò)展性:如果需要擴(kuò)展框架功能,考慮使用自定義注解和注解處理器。

10. 代碼審查

  • 代碼審查:在代碼審查過(guò)程中特別關(guān)注注解的使用,確保注解的正確性和合理性。
  • 團(tuán)隊(duì)共識(shí):與團(tuán)隊(duì)成員達(dá)成共識(shí),統(tǒng)一注解的使用規(guī)范和風(fēng)格。

示例:遵循最佳實(shí)踐的注解定義和使用

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.Documented;
import java.lang.annotation.Inherited;

// 定義一個(gè)注解
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation {
    String value() default "default value";
    int count() default 1;
}

// 使用注解
public class MyClass {
    @MyAnnotation(value = "Hello", count = 5)
    public void myMethod() {
        System.out.println("This is my method.");
    }
}

// 處理注解
public class Main {
    public static void main(String[] args) throws Exception {
        Method method = MyClass.class.getMethod("myMethod");
        if (method.isAnnotationPresent(MyAnnotation.class)) {
            MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
            System.out.println("Value: " + annotation.value());
            System.out.println("Count: " + annotation.count());
        }
    }
}

總結(jié) 

到此這篇關(guān)于java中符號(hào)@的作用及用法的文章就介紹到這了,更多相關(guān)java符號(hào)@用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java實(shí)現(xiàn)flappy Bird小游戲

    java實(shí)現(xiàn)flappy Bird小游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)flappy Bird小游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Spring Cloud Gateway重試機(jī)制的實(shí)現(xiàn)

    Spring Cloud Gateway重試機(jī)制的實(shí)現(xiàn)

    這篇文章主要介紹了Spring Cloud Gateway重試機(jī)制的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • Proxy實(shí)現(xiàn)AOP切面編程案例

    Proxy實(shí)現(xiàn)AOP切面編程案例

    這篇文章主要介紹了Proxy實(shí)現(xiàn)AOP切面編程案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • IDEA集成JProfiler11可視化工具的詳細(xì)流程(安裝、集成、測(cè)試)

    IDEA集成JProfiler11可視化工具的詳細(xì)流程(安裝、集成、測(cè)試)

    小編打算在IDEA中集成一下JProfiler11(現(xiàn)在有12版本了)工具,到網(wǎng)上搜都沒(méi)有找到合適的,于是自己動(dòng)手寫(xiě)個(gè),關(guān)于IDEA集成JProfiler11可視化工具(安裝、集成、測(cè)試)相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-06-06
  • MAC配置java+jmeter環(huán)境變量過(guò)程解析

    MAC配置java+jmeter環(huán)境變量過(guò)程解析

    這篇文章主要介紹了MAC配置java+jmeter環(huán)境變量過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java匿名內(nèi)部類(lèi)的使用方法舉例詳解

    Java匿名內(nèi)部類(lèi)的使用方法舉例詳解

    Java中的匿名內(nèi)部類(lèi)是一種沒(méi)有名字的局部?jī)?nèi)部類(lèi),主要用于一次性實(shí)現(xiàn)接口或繼承類(lèi)的場(chǎng)合,它們常見(jiàn)于GUI事件處理、多線程編程等場(chǎng)景,簡(jiǎn)化代碼結(jié)構(gòu)同時(shí)提高開(kāi)發(fā)效率,需要的朋友可以參考下
    2024-09-09
  • 講解Java編程中finally語(yǔ)句的基本使用方法

    講解Java編程中finally語(yǔ)句的基本使用方法

    這篇文章主要介紹了講解Java編程中finally語(yǔ)句的基本使用方法,finally在異常處理中的使用時(shí)Java入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • SpringBoot中使用RocketMQ的示例代碼

    SpringBoot中使用RocketMQ的示例代碼

    本文主要介紹SpringBoot中使用RocketMQ的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • springboot整合shiro實(shí)現(xiàn)記住我功能

    springboot整合shiro實(shí)現(xiàn)記住我功能

    這篇文章主要介紹了springboot整合shiro實(shí)現(xiàn)記住我功能,配置類(lèi) ShiroConfig,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-10-10
  • 詳解Spring Boot配置排序依賴(lài)技巧

    詳解Spring Boot配置排序依賴(lài)技巧

    本篇文章主要介紹了Spring Boot配置排序依賴(lài)技巧,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11

最新評(píng)論