初始化某个repository

问题描述

初始化某个repository

(1)问题描述:启动时,要对多个模块进行数据初始化,并将数据放入缓存,如:
attributeRepository.init();
analyticRepository.init();
categoryRepository.init();
subCategoryRepository.init();
scheduleRepository.init();
... ...
nodeRepository.init();
现在的问题是:系统操作过程中,需要对某个模块单独进行初始化,而某个模块初始化前,可能需要先初始化其依赖的模块。
(2)思路:每个模块对应一个字符串,该字符串与service或repository同名,如“attributeRepository”、“analyticRepository”等。然后将该字符串及service或repository放入map中,

这样就可以根据传入的字符串得到要初始化的模块。接着,需要定义一个map,其key存放模块对应的字符串,value为该字符串对应的repository所依赖的其他repositorys。
(3)具体做法:
@Autowired
private NodeRepository nodeRepository;
@Autowired
private RuleRepository ruleRepository;
@Autowired
private ScheduleRepository scheduleRepository;
@Autowired
private AttributeRepository attributeRepository;
@Autowired
private AnalyticRepository analyticRepository;
@Autowired
private CurrencyRepository currencyRepository;
@Autowired
private CategoryRepository categoryRepository;
@Autowired
private SubCategoryRepository subCategoryRepository;
/**

  • 传入参数,执行下面的这个方法
    /
    private void initRepositorys(String repository) throws SecurityException, NoSuchFieldException, InstantiationException, IllegalAccessException{
    InitializingRepository initializingRepository = this.getRepository(repository);
    //获得依赖的初始化repositorys
    InitializingRepository[] replyOnRepositorysMap = this.getReplyOnRepositorys(repository);
    //对某个repository执行初始化
    this.refreshRepository(initializingRepository, replyOnRepositorysMap);
    }
    /
    *

    • 获取要初始化的repository
    • @param repository
    • @return
      /
      public InitializingRepository getRepository(String repository){
      Map repositorysMap = new HashMap();
      repositorysMap.put("attributeRepository", attributeRepository);
      repositorysMap.put("analyticRepository", analyticRepository);
      repositorysMap.put("categoryRepository", categoryRepository);
      repositorysMap.put("subCategoryRepository", subCategoryRepository);
      repositorysMap.put("scheduleRepository", scheduleRepository);
      repositorysMap.put("nodeRepository", nodeRepository);
      repositorysMap.put("currencyRepository", currencyRepository);
      repositorysMap.put("ruleRepository", ruleRepository);
      repositorysMap.put("holdingHistoryModelRepository", holdingHistoryModelRepository);
      repositorysMap.put("ruleTemplateRepository", ruleTemplateRepository);
      repositorysMap.put("ruleMnemonicRepository", ruleMnemonicRepository);
      repositorysMap.put("incidentRepository", incidentRepository);
      return repositorysMap.get(repository);
      }
      /
      *
    • 获取要初始化的repository相关的repositorys
    • @param repository
    • @return
      /
      public InitializingRepository[] getReplyOnRepositorys(String repository){
      Map replyOnRepositorysMap = new HashMap();
      replyOnRepositorysMap.put("incidentRepository", new InitializingRepository[]{attributeRepository});
      return replyOnRepositorysMap.get(repository);
      }
      /
      *
    • 对某个repository执行初始化
    • @param initializingRepository
    • @param replyOnRepositorysMap
      /
      public void refreshRepository(InitializingRepository initializingRepository, InitializingRepository[] replyOnRepositorysMap){
      try {
      //先初始化依赖的repositorys,再初始化repository
      if(replyOnRepositorysMap!=null && replyOnRepositorysMap.length>0){
      for(int i=0; i<replyOnRepositorysMap.length; i++){
      replyOnRepositorysMap[i].init();
      }
      }
      initializingRepository.init();
      } catch (RepositoryInitializingException e) {
      e.printStackTrace();
      }
      }
      private void initRepositorys(String repository) throws SecurityException, NoSuchFieldException, InstantiationException, IllegalAccessException{
      InitializingRepository initializingRepository = this.getRepository(repository);
      //获得依赖的初始化repositorys
      InitializingRepository[] replyOnRepositorysMap = this.getReplyOnRepositorys(repository);
      //对某个repository执行初始化
      this.refreshRepository(initializingRepository, replyOnRepositorysMap);
      }
      /
      *
    • 获取要初始化的repository
    • @param repository
    • @return
      /
      public InitializingRepository getRepository(String repository){
      Map repositorysMap = new HashMap();
      repositorysMap.put("attributeRepository", attributeRepository);
      repositorysMap.put("analyticRepository", analyticRepository);
      repositorysMap.put("categoryRepository", categoryRepository);
      repositorysMap.put("subCategoryRepository", subCategoryRepository);
      repositorysMap.put("scheduleRepository", scheduleRepository);
      repositorysMap.put("nodeRepository", nodeRepository);
      repositorysMap.put("currencyRepository", currencyRepository);
      repositorysMap.put("ruleRepository", ruleRepository);
      repositorysMap.put("holdingHistoryModelRepository", holdingHistoryModelRepository);
      repositorysMap.put("ruleTemplateRepository", ruleTemplateRepository);
      repositorysMap.put("ruleMnemonicRepository", ruleMnemonicRepository);
      repositorysMap.put("incidentRepository", incidentRepository);
      return repositorysMap.get(repository);
      }
      /
      *
    • 获取要初始化的repository相关的repositorys
    • @param repository
    • @return
      /
      public InitializingRepository[] getReplyOnRepositorys(String repository){
      Map replyOnRepositorysMap = new HashMap();
      replyOnRepositorysMap.put("incidentRepository", new InitializingRepository[]{attributeRepository});
      return replyOnRepositorysMap.get(repository);
      }
      /
      *
    • 对某个repository执行初始化
    • @param initializingRepository
    • @param replyOnRepositorysMap
      /
      public void refreshRepository(InitializingRepository initializingRepository, InitializingRepository[] replyOnRepositorysMap){
      try {
      //先初始化依赖的repositorys,再初始化repository
      if(replyOnRepositorysMap!=null && replyOnRepositorysMap.length>0){
      for(int i=0; i, InitializingRepository {
      /
      *
    • 根据nodeIds查询非close且状态为A的incidents
    • @param nodeIds
    • @return
    • @throws RepositoryException
      /
      public List getIncidentsByNodeIds(Collection nodeIds) throws RepositoryException;
      /
      *
    • 根据IncidentId查询Incident
    • @param id
    • @return
      /
      public Incident getIncidentById(Integer incidentId);
      /
      *
    • 保存incident
    • @param incident
      */
      public void saveOrUpdateIncident(Incident incident) throws RepositoryException;
      }
      在InitializingRepository 中定义了init方法(具体init方法执行了哪些操作略)。
      public interface InitializingRepository {
      public void init() throws RepositoryInitializingException;
      }
时间: 2024-10-26 03:57:40

初始化某个repository的相关文章

linux搭建git服务器

git是非常方便的版本控制工具,目前网上有很多免费的git仓库可以给我们使用,但是有些时候我们并不放心将我们的项目寄放在别人的服务器上,这个时候就需要自己搭建一个git服务器. 在linux上面搭建git服务器是一件非常轻松的事情,只需要按照以下几步就能完成.为了确保整个过程的顺利,最好新创建一个名为git的账号,再使用该账号进行配置 1.安装git 在linux系统中,git安装只需要简单命令就可以完成,只需要打开终端,输入 sudo apt-get update sudo apt-get i

javascript-FusionMaps和FusionCharts在同个页面时地图显示不出来

问题描述 FusionMaps和FusionCharts在同个页面时地图显示不出来 FusionMaps和FusionCharts在同个页面时地图显示不出来 ? 咖啡加盐 ?2014-04-18 浏览次数:128 把FusionMaps, FusionCharts, PowerCharts 组合在一个页面中,只有地图没有显示出来,我用的是js语言. 1)下载的最新版本的 FusionCharts套包 2)把FusionCharts.HC.Charts.js, FusionCharts.HC.js

SqlServer与MongoDB结合使用NHibernate_MongoDB

本文实例为大家分享了SqlServer与MongoDB结合使用NHibernate的代码,供大家参考,具体内容如下 Program.cs代码内容: class Program { private const string SqlServerConnectionString = @"Data Source=.;Initial Catalog=SqlWithMongo;Persist Security Info=True;User ID=sa;Password=123456"; priva

Eclipse快速上手指南之使用CVS

版本控制在团队开发中是必不可少的.CVS是优秀的开源版本控制软件,Eclipse本身就内置了对CVS的支持,只需简单配置,即可使用CVS. 首先我们要正确安装并配置好CVS服务器,通常Linux Server都自带CVS服务,不过命令行操作比较繁琐.Windows下也有简单易用的CVS服务器,这里我们推荐CVSNT,可以下载CVSNT 2.0.51a,安装并启动CVSNT: 然后切换到Repositories面板,添加一个Repository,命名为/cvs-java,CVSNT会提示是否初始化

.Net框架搭建之2、SQL Server MEF依赖注入 MVC Repository框架

MEF依赖注入简介 依赖注入对于开发人员来说,方便的就是不需要去关注具体的实现类,不需要去New实例对象,直接使用接口层就能让程序自动注入使用,当然,还有其他一些特点,比如web http同一个请求中可以设置同一个对象只实例化一次解决多个类中多次实例化对象浪费资源的问题.不多说,百度能得到更多 多的介绍,这边直接开工搭环境. 1.数据模型Model层创建 数据模型层,首先要创建数据库,再创建Model类. 创建数据库,表,添加一条测试数据 创建数据库 创建数据表 添加测试数据 我们已经知道有几层

Tomcat源码阅读#1:classloader初始化

Bootstrap 通过Tomcat的启动脚本可以看到启动的入口是在Bootstrap,来看下Bootstrap的main方法, /** * Main method and entry point when starting Tomcat via the provided * scripts. * * @param args Command line arguments to be processed */ public static void main(String args[]) { if

Entity Framework Repository模式

原文:Entity Framework Repository模式 Repository模式之前 如果我们用最原始的EF进行设计对每个实体类的"C(增加).R(读取).U(修改).D(删除)"这四个操作. 第一个:先来看看查询,对于实体类简单的查询操作,每次都是这样的过程会在代码中拥有大量的重复 极为类似的代码段. using (var db = new EFContext("EFContext")) { var persons = db.Persons.Where(

spring 单例多例,默认,懒加载,初始化调用

(1)spring 默认是单例, 单例情况下:所有线程对于同一个类共同拥有一个对象,此时如果在类里面创建一个类变量如下 由于所有线程共享一个类对象,所以也共享一个类变量,每次请求都会增加 @Controller @RequestMapping("/user") public class User { private int i=0;//类变量 @RequestMapping("/list.shtm") public String list() { i++; Syst

[Android]Dagger2Metrics - 测量DI图表初始化的性能(翻译)

以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5098943.html Dagger2Metrics - 测量DI图表初始化的性能 原文:http://frogermcs.github.io/dagger2metrics-measure-performance-of-graph-initialization/ 几个月前我们通过 Dagger 2 - graph creation performance 经历了