YMP-Online-Handbuch
/ 包類(lèi)的自動(dòng)掃描(AutoScan)
包類(lèi)的自動(dòng)掃描(AutoScan)
YMP框架初始化時(shí)將自動(dòng)掃描由autoscan_packages參數(shù)配置的包路徑下所有聲明了@Bean注解的類(lèi)文件,首先分析被加載的類(lèi)所有已實(shí)現(xiàn)接口并注冊(cè)到Bean容器中,然后執(zhí)行類(lèi)成員的依賴(lài)注入和方法攔截代理的綁定;
注:相同接口的多個(gè)實(shí)現(xiàn)類(lèi)被同時(shí)注冊(cè)到Bean容器時(shí),通過(guò)接口獲取的實(shí)現(xiàn)類(lèi)將是最后被注冊(cè)到容器的那個(gè),此時(shí)只能通過(guò)實(shí)例對(duì)象類(lèi)型才能正確獲?。?/p>
示例一:
// 業(yè)務(wù)接口 public interface IDemo { String sayHi(); } // 業(yè)務(wù)接口實(shí)現(xiàn)類(lèi),單例模式 @Bean public class DemoBean implements IDemo { public String sayHi() { return "Hello, YMP!"; } }
示例二:
// 示例一中的業(yè)務(wù)接口實(shí)現(xiàn)類(lèi),非單例模式 @Bean(singleton = false) public class DemoBean implements IDemo { public String sayHi() { return "Hello, YMP!"; } }
測(cè)試代碼:
public static void main(String[] args) throws Exception { YMP.get().init(); try { // 1. 通過(guò)接口獲取實(shí)例對(duì)象 IDemo _demo = YMP.get().getBean(IDemo.class); System.out.println(_demo.sayHi()); // 2. 直接獲取實(shí)例對(duì)象 _demo = YMP.get().getBean(DemoBean.class); System.out.println(_demo.sayHi()); } finally { YMP.get().destroy(); } }