套件類別的自動掃描(AutoScan)


YMP框架初始化時將自動掃描由autoscan_packages參數配置的套件路徑下所有聲明了@Bean註解的類別文件,首先分析被載入的類別所有已實作介面並註冊到Bean容器中,然後執行類別成員的依賴注入和方法攔截代理的綁定;

:相同介面的多個實作類別同時註冊到Bean容器時,透過介面取得的實作類別將會是最後被註冊到容器的那個,此時只能透過實例物件類型才能正確取得;

  • 範例一:

    // 业务接口
    public interface IDemo {
        String sayHi();
    }
    
    // 业务接口实现类,单例模式
    @Bean
    public class DemoBean implements IDemo {
        public String sayHi() {
            return "Hello, YMP!";
        }
    }
  • #範例二:
    // 示例一中的业务接口实现类,非单例模式
    @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();
        }
    }
######