posts - 495,comments - 227,trackbacks - 0
          import com.duxiu.modules.beetlsql.BeetlSQLDao;
          import org.beetl.sql.core.SQLManager;
          import org.springframework.beans.BeansException;
          import org.springframework.beans.factory.support.DefaultListableBeanFactory;
          import org.springframework.context.ApplicationContext;
          import org.springframework.context.ApplicationContextAware;
          import org.springframework.context.ConfigurableApplicationContext;
          import org.springframework.core.io.Resource;
          import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
          import org.springframework.core.io.support.ResourcePatternResolver;

          import java.io.IOException;
          import java.util.Objects;
          import java.util.stream.Stream;

          public class DaoFactoryBean implements ApplicationContextAware {
              
              
              @Override
              
          public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
                  
                  ConfigurableApplicationContext context 
          = (ConfigurableApplicationContext) applicationContext;
                  DefaultListableBeanFactory beanFactory 
          = (DefaultListableBeanFactory) context.getBeanFactory();
                  ResourcePatternResolver rpr 
          = new PathMatchingResourcePatternResolver(applicationContext);
                  SQLManager sqlManager 
          = applicationContext.getBean(SQLManager.class);
                  
          try {
                      Resource[] resources 
          = rpr.getResources("classpath:com/duxiu/**/*.class");
                      Stream.of(resources).map(f 
          -> {
                          
          try {
                              
          return f.getURI().getPath().split("(classes/)|(!/)")[1].replace("/"".").replace(".class""");
                          } 
          catch (IOException e) {
                              e.printStackTrace();
                              
          return null;
                          }
                      }).filter(Objects::nonNull).forEach(f 
          -> {
                          
          try {
                              Class
          <?> aClass = Class.forName(f);
                              
          boolean match = Stream.of(aClass.getAnnotations()).anyMatch(c -> c instanceof BeetlSQLDao);
                              
          if (match && !beanFactory.containsBean(aClass.getSimpleName())) {
                                  System.out.println(sqlManager.getMapper(aClass));
                                  
          //beanFactory.registerSingleton(aClass.getSimpleName(),sqlManager.getMapper(aClass));
                              }
                          } 
          catch (ClassNotFoundException e) {
                              e.printStackTrace();
                          }
                      });
                  } 
          catch (IOException e) {
                      e.printStackTrace();
                  }
                  System.out.println(applicationContext.getBean(SQLManager.
          class));
                  
          /*if(!beanFactory.containsBean(beanName)){
                      BeanDefinitionBuilder beanDefinitionBuilder= BeanDefinitionBuilder.rootBeanDefinition(beanClass);
                      beanDefinitionBuilder.addPropertyValue("host", host);
                      beanDefinitionBuilder.addPropertyValue("port", port);
                      beanDefinitionBuilder.addPropertyValue("database", database);
                      beanDefinitionBuilder.setInitMethodName("init");
                      beanDefinitionBuilder.setDestroyMethodName("destroy");
                      beanFactory.registerBeanDefinition(beanName, beanDefinitionBuilder.getBeanDefinition());
                      logger.info("Add {} to bean container.", beanName);
                  }
          */
              }
          }
          posted on 2016-03-23 10:47 SIMONE 閱讀(1728) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 惠来县| 读书| 温宿县| 开阳县| 红河县| 武汉市| 贡山| 洛南县| 合阳县| 延庆县| 宣汉县| 玉龙| 遂昌县| 涞水县| 广宁县| 米脂县| 交城县| 扬中市| 苍南县| 宣城市| 额尔古纳市| 西林县| 云南省| 台东县| 延安市| 浏阳市| 上犹县| 奈曼旗| 陇南市| 通许县| 高清| 潮州市| 永清县| 眉山市| 尚志市| 天柱县| 上高县| 沙坪坝区| 台中县| 利川市| 唐海县|