包類的自動掃描(AutoScan)

2018-12-24 21:48 更新

YMP框架初始化時將自動掃描由autoscan_packages參數(shù)配置的包路徑下所有聲明了@Bean注解的類文件,首先分析被加載的類所有已實現(xiàn)接口并注冊到Bean容器中,然后執(zhí)行類成員的依賴注入和方法攔截代理的綁定;

:相同接口的多個實現(xiàn)類被同時注冊到Bean容器時,通過接口獲取的實現(xiàn)類將是最后被注冊到容器的那個,此時只能通過實例對象類型才能正確獲??;

  • 示例一:

    // 業(yè)務(wù)接口
    public interface IDemo {
        String sayHi();
    }
    
    // 業(yè)務(wù)接口實現(xiàn)類,單例模式
    @Bean
    public class DemoBean implements IDemo {
        public String sayHi() {
            return "Hello, YMP!";
        }
    }
    
  • 示例二:

    // 示例一中的業(yè)務(wù)接口實現(xiàn)類,非單例模式
    @Bean(singleton = false)
    public class DemoBean implements IDemo {
        public String sayHi() {
            return "Hello, YMP!";
        }
    }
    
  • 測試代碼:

    public static void main(String[] args) throws Exception {
        YMP.get().init();
        try {
            // 1. 通過接口獲取實例對象
            IDemo _demo = YMP.get().getBean(IDemo.class);
            System.out.println(_demo.sayHi());
    
            // 2. 直接獲取實例對象
            _demo = YMP.get().getBean(DemoBean.class);
            System.out.println(_demo.sayHi());
        } finally {
            YMP.get().destroy();
        }
    }
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號