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 閱讀(1721) 評(píng)論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 财经| 盈江县| 安龙县| 武定县| 尉犁县| 客服| 微博| 临夏市| 农安县| 威远县| 柏乡县| 常德市| 弋阳县| 霍州市| 昂仁县| 申扎县| 张家川| 寿阳县| 东光县| 澜沧| 绿春县| 肇庆市| 明光市| 崇仁县| 辉南县| 石景山区| 乌兰察布市| 微山县| 安陆市| 萝北县| 德令哈市| 察雅县| 洛阳市| 丰镇市| 岳池县| 甘德县| 邵阳市| 时尚| 北宁市| 信宜市| 红原县|