套件類別的自動掃描(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(); } }