Spring高級話題-元註解與組合註解

一、什麼是元註解、組合註解

元註解:可以註解到別的註解上的註解
組合註解: 被註解的註解

二、annotationCombineDemo

組合註解

package com.cactus.demo.annotation_combine;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

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

/**
 * Created by liruigao
 * Date: 2019-12-09 11:16
 * Description:
 * 組合@Configuration與@ComponentScan
 * 一篇比較好的屬性覆蓋講解文章(https://www.cnblogs.com/goodAndyxublog/p/11181200.html)
 */
// 註解使用範圍,TYPE : 類型上面  用於描述類、接口(包括註解類型) 或enum聲明
@Target(ElementType.TYPE)
// 註解生命週期,RUNTIME :表示 一個註解可以在源碼、字節碼、及運行時期該註解都會存在
@Retention(RetentionPolicy.RUNTIME)
// documented by javadoc
@Documented
@Configuration
@ComponentScan
public @interface BriefConfiguration {
    // 同名屬性隱式覆蓋
    String[] value() default {};
}

方法bean

package com.cactus.demo.annotation_combine;

import org.springframework.stereotype.Service;

/**
 * Created by liruigao
 * Date: 2019-12-09 11:24
 * Description:
 */

@Service
public class ACDemo {
    public void show() {
        System.out.println("I am created by @BriefConfiguration");
    }
}

配置類

package com.cactus.demo.annotation_combine;

/**
 * Created by liruigao
 * Date: 2019-12-09 11:25
 * Description:
 */

@BriefConfiguration("com.cactus.demo.annotation_combine")
public class ACConfig {
}

Main

package com.cactus.demo.annotation_combine;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * Created by liruigao
 * Date: 2019-12-09 11:26
 * Description:
 */


public class Main {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ACConfig.class);
        ACDemo acDemo = context.getBean(ACDemo.class);
        acDemo.show();
        context.close();
    }
}

Result

I am created by @BriefConfiguration
發佈了108 篇原創文章 · 獲贊 56 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章