Analyse automatique des colis (AutoScan)


Lorsque le framework YMP est initialisé, il analysera automatiquement tous les fichiers de classe déclarés avec les annotations @Bean dans le chemin du package configuré par le paramètre autoscan_packages. Tout d'abord, toutes les interfaces implémentées des classes chargées seront analysées et enregistrées dans le conteneur Bean, puis les dépendances des membres de la classe seront exécutées. Liaison des agents d'injection et d'interception de méthode ;

Remarque : lorsque plusieurs classes d'implémentation de la même interface sont enregistrées dans le conteneur Bean en même temps, la classe d'implémentation obtenue via l'interface sera la dernière enregistrée dans le conteneur. À ce stade, seule Elle peut être obtenue correctement via le type d'objet d'instance

  • Exemple 1 :

    // 业务接口
    public interface IDemo {
        String sayHi();
    }
    
    // 业务接口实现类,单例模式
    @Bean
    public class DemoBean implements IDemo {
        public String sayHi() {
            return "Hello, YMP!";
        }
    }
  • Exemple 2 :

    // 示例一中的业务接口实现类,非单例模式
    @Bean(singleton = false)
    public class DemoBean implements IDemo {
        public String sayHi() {
            return "Hello, YMP!";
        }
    }
  • Code test :

    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();
        }
    }