如何解决使用名称 'dataFlowController' 创建错误 bean 的问题

huangapple 未分类评论49阅读模式
英文:

How to resolve error creating error bean with name 'dataFlowController'

问题

抱歉,由于内容较多,我将无法完整翻译整个代码段。但是,我可以看出您遇到了Spring框架的依赖注入和bean创建相关的问题。您的错误消息表明在创建bean时出现了依赖项不满足的情况。

主要问题似乎出现在以下部分:

  1. Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException:
  2. Error creating bean with name 'pamdaImportDirect': Unsatisfied
  3. dependency expressed through field 'catalogueImportDirectStarter';
  4. nested exception is
  5. org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean
  6. named 'catalogueImportDirectStarter' is expected to be of type
  7. 'com.orange.pamda.worker.starter.CatalogueImportDirectStarter' but was
  8. actually of type 'com.sun.proxy.$Proxy129'

这个错误表明在 pamdaImportDirect bean 中的 catalogueImportDirectStarter 字段的类型不正确。根据错误信息,期望的类型是 CatalogueImportDirectStarter,但实际类型是代理类型($Proxy129)。这通常发生在Spring的AOP(面向切面编程)中。

您可能需要检查以下几点来解决这个问题:

  1. 导入包:确保所有涉及的类和接口都正确导入并在类路径中。

  2. 注解标记:确保您正确地使用了Spring的注解(例如 @Autowired)来进行依赖注入。

  3. 配置文件:检查您的配置文件(如XML配置文件或Java配置类)是否正确配置了bean。

  4. 接口/类声明:确保 CatalogueImportDirectStarter 类正确地实现了所需的接口(如果有的话)。

  5. AOP代理:如果在类中使用了Spring的AOP特性,可能会导致代理问题。您可以尝试调整代理设置,或者确保被代理的类是正确的类型。

  6. 循环依赖:检查是否存在循环依赖,这也可能导致依赖注入问题。

  7. Bean命名:检查bean的命名是否与注入点的期望名称匹配。

  8. 使用 @Qualifier 注解:如果有多个候选bean可以注入,可以尝试使用 @Qualifier 注解来明确指定使用哪个bean。

由于限制了单次回答的字数,我无法详细分析您的代码,但以上是一些可能导致您遇到的问题的一般性建议。您可以根据这些方向来检查和排除问题,或者提供更具体的问题细节以获取更准确的帮助。

英文:

hello I am developing a rest service and when I run my application I get the following error:

> > org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataFlowController': Unsatisfied
> dependency expressed through field 'pamdaImportDirectStarter'; nested
> exception is
> org.springframework.beans.factory.UnsatisfiedDependencyException:
> Error creating bean with name 'pamdaImportDirect': Unsatisfied
> dependency expressed through field 'catalogueImportDirectStarter';
> nested exception is
> org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean
> named 'catalogueImportDirectStarter' is expected to be of type
> 'com.orange.pamda.worker.starter.CatalogueImportDirectStarter' but was
> actually of type 'com.sun.proxy.$Proxy129' Apr 08, 2020 12:58:35 PM
> org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean
> destroy INFO: Closing JPA EntityManagerFactory for persistence unit
> 'pamdaPersistenceUnit' Apr 08, 2020 12:58:35 PM
> org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
> shutdown INFO: Shutting down ExecutorService Apr 08, 2020 12:58:35 PM
> org.springframework.web.context.ContextLoader
> initWebApplicationContext SEVERE: Context initialization failed
> org.springframework.beans.factory.UnsatisfiedDependencyException:
> Error creating bean with name 'dataFlowController': Unsatisfied
> dependency expressed through field 'pamdaImportDirectStarter'; nested
> exception is
> org.springframework.beans.factory.UnsatisfiedDependencyException:
> Error creating bean with name 'pamdaImportDirect': Unsatisfied
> dependency expressed through field 'catalogueImportDirectStarter';
> nested exception is
> org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean
> named 'catalogueImportDirectStarter' is expected to be of type
> 'com.orange.pamda.worker.starter.CatalogueImportDirectStarter' but was
> actually of type 'com.sun.proxy.$Proxy129' at
> org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588)
> at
> org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
> at
> org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
> at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
> at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
> at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
> at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
> at
> org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443)
> at
> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325)
> at
> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
> at
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4685)
> at
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5146)
> at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
> at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
> at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) at
> org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
> at
> java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
> at
> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
> at
> org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841)
> at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
> at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
> at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) at
> org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
> at
> java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
> at
> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
> at
> org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
> at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
> at
> org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
> at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
> at
> org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
> at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
> at org.apache.catalina.startup.Catalina.start(Catalina.java:633) at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498) at
> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:343) at
> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:474) Caused
> by: org.springframework.beans.factory.UnsatisfiedDependencyException:
> Error creating bean with name 'pamdaImportDirect': Unsatisfied
> dependency expressed through field 'catalogueImportDirectStarter';
> nested exception is
> org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean
> named 'catalogueImportDirectStarter' is expected to be of type
> 'com.orange.pamda.worker.starter.CatalogueImportDirectStarter' but was
> actually of type 'com.sun.proxy.$Proxy129' at
> org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588)
> at
> org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)

here is the code for my rest service "dataFlowController" :

  1. package com.orange.pamda.controller;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.util.List;
  5. import org.apache.commons.io.FileUtils;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.beans.factory.annotation.Qualifier;
  10. import org.springframework.context.annotation.Bean;
  11. import org.springframework.http.HttpHeaders;
  12. import org.springframework.http.HttpStatus;
  13. import org.springframework.http.ResponseEntity;
  14. import org.springframework.security.authentication.AuthenticationManager;
  15. import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
  16. import org.springframework.transaction.annotation.Transactional;
  17. import org.springframework.util.ResourceUtils;
  18. import org.springframework.web.bind.annotation.CrossOrigin;
  19. import org.springframework.web.bind.annotation.PostMapping;
  20. import org.springframework.web.bind.annotation.RequestBody;
  21. import org.springframework.web.bind.annotation.RequestMapping;
  22. import org.springframework.web.bind.annotation.RequestMethod;
  23. import org.springframework.web.bind.annotation.RestController;
  24. import com.orange.pamda.config.PamdaServerProperty;
  25. import com.orange.pamda.dao.ProfileDao;
  26. import com.orange.pamda.dao.ScopeDao;
  27. import com.orange.pamda.interfaces.v11.CatalogueSystem;
  28. import com.orange.pamda.worker.service.WorkerService;
  29. import com.orange.pamda.worker.starter.CatalogueImportDirectStarter;
  30. import com.orange.pamda.worker.starter.MappingExportStarter;
  31. import com.orange.pamda.worker.starter.MappingImportStarter;
  32. import com.orange.pamda.worker.starter.CatalogueExportDirectStarter;
  33. import com.orange.pamda.worker.starter.PamdaImportDirectStarter;
  34. import com.orange.pamda.worker.utils.DataFlowParameterInfo;
  35. import com.orange.pamda.worker.utils.Worker;
  36. import com.orange.pamda.worker.utils.WorkerExecutionStatus;
  37. import com.orange.pamda.worker.utils.WorkerParameterInfo;
  38. @RestController
  39. @RequestMapping("dataFlow")
  40. @Transactional
  41. @CrossOrigin
  42. public class DataFlowController {
  43. private static final Logger LOGGER = LoggerFactory.getLogger(DataFlowController.class);
  44. @Autowired
  45. //@Qualifier("catalogueImportDirectStarter")
  46. CatalogueImportDirectStarter catalogueImportDirectStarter;
  47. @Autowired
  48. CatalogueExportDirectStarter catalogueExportDirectStarter;
  49. @Autowired
  50. MappingImportStarter mappingImportStarter;
  51. @Autowired
  52. MappingExportStarter mappingExportStarter;
  53. @Autowired
  54. PamdaImportDirectStarter pamdaImportDirectStarter;
  55. @Autowired
  56. WorkerService workerService;
  57. @Autowired
  58. AuthenticationManager authenticationManager;
  59. @Autowired
  60. DaoAuthenticationProvider authenticationProvider;
  61. @Autowired
  62. PamdaServerProperty pamdaProperty;
  63. @Autowired
  64. ScopeDao scopeDao;
  65. @RequestMapping(value = "/directExportCatalogue", method = RequestMethod.POST)
  66. public ResponseEntity<WorkerExecutionStatus> directExportCatalogue(@RequestBody DataFlowParameterInfo dataFlowParameterInfo) {
  67. WorkerExecutionStatus workerExecutionStatus = new WorkerExecutionStatus();
  68. try {
  69. long startTime = System.nanoTime();
  70. dataFlowParameterInfo.setDataFlowName(com.orange.pamda.worker.utils.Worker.catalogueImport.name().toString());
  71. catalogueExportDirectStarter.start(dataFlowParameterInfo);
  72. long endTime = (System.nanoTime() - startTime) / 1000000000;
  73. LOGGER.trace("[TIMER] Pamda import direct : {}", endTime);
  74. System.out.println("[TIMER] Pamda import direct : {}"+ endTime);
  75. } catch (IOException e) {
  76. // TODO Auto-generated catch block
  77. workerExecutionStatus.setOnError(true);
  78. }
  79. return new ResponseEntity<>(workerExecutionStatus, HttpStatus.OK);
  80. }
  81. @RequestMapping(value = "/directImportCatalogue", method = RequestMethod.POST)
  82. public ResponseEntity<WorkerExecutionStatus> directImportCatalogue(@RequestBody DataFlowParameterInfo dataFlowParameterInfo) {
  83. dataFlowParameterInfo.setDataFlowName(com.orange.pamda.worker.utils.Worker.catalogueImport.name().toString());
  84. WorkerExecutionStatus workerExecutionStatus = new WorkerExecutionStatus();
  85. try {
  86. long startTime = System.nanoTime();
  87. catalogueImportDirectStarter.start(dataFlowParameterInfo);
  88. long endTime = (System.nanoTime() - startTime) / 1000000000;
  89. LOGGER.trace("[TIMER] directImportCatalogue : {}", endTime);
  90. System.out.println("[TIMER] directImportCatalogue : {}"+ endTime);
  91. } catch (IOException e) {
  92. // TODO Auto-generated catch block
  93. workerExecutionStatus.setOnError(true);
  94. }
  95. return new ResponseEntity<>(workerExecutionStatus, HttpStatus.OK);
  96. }
  97. @PostMapping(value = "/directImportPamda")
  98. public ResponseEntity<WorkerExecutionStatus> directImportPamda(@RequestBody DataFlowParameterInfo dataFlowParameterInfo) {
  99. WorkerExecutionStatus workerExecutionStatus = new WorkerExecutionStatus();
  100. try {
  101. long startTime = System.nanoTime();
  102. dataFlowParameterInfo.setDataFlowName(com.orange.pamda.worker.utils.Worker.catalogueImport.name().toString());
  103. pamdaImportDirectStarter.start(dataFlowParameterInfo);
  104. long endTime = (System.nanoTime() - startTime) / 1000000000;
  105. LOGGER.trace("[TIMER] Pamda import direct : {}", endTime);
  106. System.out.println("[TIMER] Pamda import direct : {}"+ endTime);
  107. } catch (IOException e) {
  108. // TODO Auto-generated catch block
  109. workerExecutionStatus.setOnError(true);
  110. }
  111. return new ResponseEntity<>(workerExecutionStatus, HttpStatus.OK);
  112. }
  113. /* @RequestMapping(value = "/directExportMapping", method = RequestMethod.POST)
  114. public ResponseEntity<Void> directExportMapping(@RequestBody WorkerParameterInfo workerParameterInfo) {
  115. workerParameterInfo.setWorker(Worker.valueOf(com.orange.pamda.worker.utils.Worker.mappingExport.name()));
  116. workerService.launch(workerParameterInfo);
  117. return new ResponseEntity<>(HttpStatus.OK);
  118. }
  119. @RequestMapping(value = "/directImportMapping", method = RequestMethod.POST)
  120. public ResponseEntity<WorkerExecutionStatus> directImportMapping(@RequestBody WorkerParameterInfo workerParameterInfo) {
  121. workerParameterInfo.setWorker(Worker.valueOf(com.orange.pamda.worker.utils.Worker.mappingImport.name()));
  122. List<WorkerExecutionStatus> workerExecutionStatuss = workerService.launch(workerParameterInfo);
  123. return new ResponseEntity<>(workerExecutionStatuss.get(0), HttpStatus.OK);
  124. }
  125. */
  126. }

and here is the class called by my directImportPamda method for processing :

  1. package com.orange.pamda.worker.starter;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.util.List;
  5. import javax.inject.Inject;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Component;
  10. import org.springframework.transaction.annotation.Propagation;
  11. import org.springframework.transaction.annotation.Transactional;
  12. import com.google.common.collect.Lists;
  13. import com.orange.pamda.config.PamdaServerProperty;
  14. import com.orange.pamda.dao.MappingContextDAO;
  15. import com.orange.pamda.entity.jpa.MappingContext;
  16. import com.orange.pamda.service.MappingContextService;
  17. import com.orange.pamda.util.DataFlowParametersBuilder;
  18. import com.orange.pamda.util.DateHelper;
  19. import com.orange.pamda.util.FileFormatter;
  20. import com.orange.pamda.util.FileHelper;
  21. import com.orange.pamda.util.PamdaDataFlowStarter;
  22. import com.orange.pamda.worker.distributon.ArchiveService;
  23. import com.orange.pamda.worker.eraser.DataEraser;
  24. import com.orange.pamda.worker.utils.DataFlowParameterInfo;
  25. @Component("pamdaImportDirect")
  26. public class PamdaImportDirectStarter implements PamdaDataFlowStarter {
  27. @Inject
  28. private ArchiveService archiveService;
  29. @Inject
  30. private DataEraser dataEraser;
  31. @Autowired
  32. CatalogueImportDirectStarter catalogueImportDirectStarter;
  33. @Autowired
  34. CatalogueExportDirectStarter catalogueExportDirectStarter;
  35. @Autowired
  36. MappingImportStarter mappingImportStarter;
  37. @Autowired
  38. MappingExportStarter mappingExportStarter;
  39. @Inject
  40. private PamdaServerProperty pamdaProperty;
  41. @Autowired
  42. private MappingContextDAO mappingContextDAO;
  43. @Autowired
  44. private MappingContextService mappingContextService;
  45. protected static Logger logger = LoggerFactory.getLogger(PamdaImportDirectStarter.class);
  46. @Transactional(propagation = Propagation.NOT_SUPPORTED)
  47. public void start(DataFlowParameterInfo dataFlowParameterInfo)
  48. throws IOException {
  49. System.out.println("START launching Pamda Import");
  50. startImport(dataFlowParameterInfo);
  51. System.out.println("End launching Pamda Import JOB");
  52. }
  53. private void startImport(DataFlowParameterInfo dataFlowParameterInfo) {
  54. try {
  55. catalogueExportDirectStarter.start(dataFlowParameterInfo);
  56. } catch (IOException e3) {
  57. // TODO Auto-generated catch block
  58. e3.printStackTrace();
  59. }
  60. try {
  61. mappingExportStarter.start(dataFlowParameterInfo);
  62. } catch (IOException e2) {
  63. // TODO Auto-generated catch block
  64. e2.printStackTrace();
  65. }
  66. archive(dataFlowParameterInfo);
  67. unZipArchive(dataFlowParameterInfo);
  68. dataEraser(dataFlowParameterInfo);
  69. try {
  70. catalogueImportDirectStarter.start(dataFlowParameterInfo);
  71. } catch (IOException e1) {
  72. // TODO Auto-generated catch block
  73. e1.printStackTrace();
  74. }
  75. try {
  76. mappingImportStarter.start(dataFlowParameterInfo);
  77. } catch (IOException e) {
  78. // TODO Auto-generated catch block
  79. e.printStackTrace();
  80. }
  81. deleteUnZipFiles();
  82. }
  83. public void archive(DataFlowParameterInfo dataFlowParameterInfo) {
  84. DataFlowParametersBuilder builder = new DataFlowParametersBuilder();
  85. String pamdaImportPath = pamdaProperty.getPamdaImportPath();
  86. File[] filesList = null;
  87. try {
  88. filesList = FileHelper.getFilesFromDirectoryMatchingPattern(pamdaImportPath, pamdaProperty.getPamdaFilename());
  89. } catch(Exception ex) {
  90. //throw new JobParametersInvalidException(dataFlowParameterInfo.NO_FILE);
  91. }
  92. if (filesList != null && filesList.length > 1)
  93. //throw new JobParametersInvalidException(dataFlowParameterInfo.TOO_MANY_FILES);
  94. if (filesList != null && filesList.length == 1) {
  95. MappingContext selectedMappingContext = mappingContextDAO.findMappingContext(Long.parseLong(dataFlowParameterInfo.getCurrentMappingContext()));
  96. //if(!filesList[0].getName().contains(selectedMappingContext.getCode()))
  97. //throw new JobParametersInvalidException(dataFlowParameterInfo.DIFFERENT_CONTEXT_FILE + "." + filesList[0].getName());
  98. }
  99. String parameterPaths = FileHelper.buildSplitFilenameParameter(filesList);
  100. String pamdaFilename = pamdaProperty.getPamdaFilename();
  101. long startTime = System.currentTimeMillis();
  102. String exportDateString = DateHelper.FILE_DATE_TIME_FORMATTER.print(startTime);
  103. MappingContext mappCntxt = mappingContextService
  104. .findById(Long.valueOf(dataFlowParameterInfo.getCurrentMappingContext()));
  105. List<String> pathList = FileHelper.splitFilesParameter(cataloguePath, catalogueFilename);
  106. pathList.addAll(FileHelper.splitFilesParameter(mappingPath, mappingFilename));
  107. String pamdaExportPath = pamdaProperty.getPamdaExportPath();
  108. File pamdaExportResult;
  109. try {
  110. pamdaExportResult = FileFormatter.getFormattedFileWithDate(mappCntxt.getCode(), pamdaFilename, ".zip",
  111. pamdaExportPath, exportDateString);
  112. archiveService.archiveFiles(pamdaExportPath, pamdaExportResult.getName(), pathList, currentContext , dataFlowParameterInfo.getPamdaVersion().getVersion() , dataFlowParameterInfo.getPamdaVersion().getCommentaire(), dataFlowParameterInfo.getUser(), dataFlowParameterInfo.getPamdaVersion().getFlag());
  113. } catch (IOException e) {
  114. // TODO Auto-generated catch block
  115. e.printStackTrace();
  116. }
  117. }
  118. private void unZipArchive (DataFlowParameterInfo dataFlowParameterInfo) {
  119. String pamdaImportPath = pamdaProperty.getPamdaImportPath();
  120. File[] filesList = null;
  121. try {
  122. filesList = FileHelper.getFilesFromDirectoryMatchingPattern(pamdaImportPath, pamdaProperty.getPamdaFilename());
  123. } catch(Exception ex) {
  124. //throw new JobParametersInvalidException(dataFlowParameterInfo.NO_FILE);
  125. }
  126. String importFilename = FileHelper.buildSplitFilenameParameter(filesList);
  127. List<String> files = FileHelper.splitFilesParameter(pamdaImportPath, importFilename);
  128. try {
  129. archiveService.unZipArchiveFile( files );
  130. } catch (IOException e) {
  131. // TODO Auto-generated catch block
  132. e.printStackTrace();
  133. }
  134. }
  135. public void dataEraser(DataFlowParameterInfo dataFlowParameterInfo) {
  136. dataEraser.eraseData(Long.parseLong(dataFlowParameterInfo.getCurrentMappingContext()));
  137. }
  138. public void deleteUnZipFiles() {
  139. List<File> folderList = Lists.newArrayList();
  140. folderList.add(FileHelper.getFileFromResource(pamdaProperty.getMappingImportPamdaPath()));
  141. folderList.add(FileHelper.getFileFromResource(pamdaProperty.getCatalogueImportPamdaPath()));
  142. try {
  143. archiveService.deleteArchiveFiles(folderList);
  144. } catch (IOException e) {
  145. // TODO Auto-generated catch block
  146. e.printStackTrace();
  147. }
  148. }
  149. }

and here is the code of my class CatalogExportDirectStarter which is called by the class PamdaImportDirect :

  1. package com.orange.pamda.worker.starter;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import javax.inject.Inject;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.beans.factory.annotation.Qualifier;
  11. import org.springframework.stereotype.Component;
  12. import org.springframework.transaction.annotation.Propagation;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import com.orange.pamda.config.PamdaServerProperty;
  15. import com.orange.pamda.dao.MappingContextDAO;
  16. import com.orange.pamda.entity.jpa.MappingContext;
  17. import com.orange.pamda.service.MappingContextService;
  18. import com.orange.pamda.util.DataFlowParameters;
  19. import com.orange.pamda.util.DataFlowParametersBuilder;
  20. import com.orange.pamda.util.DateHelper;
  21. import com.orange.pamda.util.FileFormatter;
  22. import com.orange.pamda.util.FileHelper;
  23. import com.orange.pamda.util.PamdaDataFlowStarter;
  24. import com.orange.pamda.worker.catalogue.exporter.CatalogueExporter;
  25. import com.orange.pamda.worker.catalogue.importer.CatalogueImporter;
  26. import com.orange.pamda.worker.service.XMLValidationService;
  27. import com.orange.pamda.worker.utils.DataFlowParameterInfo;
  28. @Component("catalogueExportDirectStarter")
  29. public class CatalogueExportDirectStarter implements PamdaDataFlowStarter {
  30. @Inject
  31. @Qualifier("catalogueImporter")
  32. private CatalogueExporter catalogueExporter;
  33. @Inject
  34. private XMLValidationService xmlValidationService;
  35. @Inject
  36. private PamdaServerProperty pamdaProperty;
  37. @Autowired
  38. private MappingContextDAO mappingContextDAO;
  39. @Autowired
  40. private MappingContextService mappingContextService;
  41. protected static Logger logger = LoggerFactory.getLogger(PamdaImportDirectStarter.class);
  42. @Transactional(propagation = Propagation.NOT_SUPPORTED)
  43. public void start(DataFlowParameterInfo dataFlowParameterInfo)
  44. throws IOException {
  45. String pamdaExportPath = pamdaProperty.getPamdaExportPath();
  46. String pamdaFilename = pamdaProperty.getPamdaFilename();
  47. DataFlowParametersBuilder builder = new DataFlowParametersBuilder();
  48. long startTime = System.currentTimeMillis();
  49. MappingContext mappCntxt = mappingContextService
  50. .findById(Long.valueOf(dataFlowParameterInfo.getCurrentMappingContext()));
  51. String exportDateString = DateHelper.FILE_DATE_TIME_FORMATTER.print(startTime);
  52. File pamdaCatalogueExportResult = FileFormatter.getFormattedFileWithDate(mappCntxt.getCode(),
  53. pamdaProperty.getCatalogueFilename(), ".xml", pamdaExportPath, exportDateString);
  54. builder.addString(cataloguePath, pamdaExportPath);
  55. builder.addString(catalogueFilename, pamdaCatalogueExportResult.getName());
  56. builder.addString("catalogueCode", dataFlowParameterInfo.ALL);
  57. File pamdaMappingExportResult = FileFormatter.getFormattedFileWithDate(mappCntxt.getCode(),
  58. pamdaProperty.getMappingFilename(), ".xml", pamdaExportPath, exportDateString);
  59. builder.addString(mappingPath, pamdaExportPath);
  60. builder.addString(mappingFilename, pamdaMappingExportResult.getName());
  61. File pamdaExportResult = FileFormatter.getFormattedFileWithDate(mappCntxt.getCode(), pamdaFilename, ".zip",
  62. pamdaExportPath, exportDateString);
  63. builder.addString("archiveTargetName", pamdaExportResult.getName());
  64. builder.addString("archiveTargetDirectory", pamdaExportPath);
  65. builder.addString(targetFilePathParameterName, "archiveTargetName");
  66. builder.addLong(datetime, startTime);
  67. builder.addString(currentContext, dataFlowParameterInfo.getCurrentMappingContext());
  68. builder.addString(disabledByUser, String.valueOf(dataFlowParameterInfo.isDisabledByUser()));
  69. if(dataFlowParameterInfo.getPamdaVersion() != null) {
  70. builder.addString("pamdaVersion", dataFlowParameterInfo.getPamdaVersion().getVersion());
  71. builder.addString("comVersion", dataFlowParameterInfo.getPamdaVersion().getCommentaire());
  72. builder.addString("login", dataFlowParameterInfo.getUser());
  73. builder.addDate("flag", dataFlowParameterInfo.getPamdaVersion().getFlag());
  74. }
  75. startExport(builder.toDataFlowParameters() );
  76. }
  77. public void startExport(DataFlowParameters dataFlowParameters ) {
  78. //catalogueExport
  79. Long mappingSystemId = Long.parseLong(dataFlowParameters.getString(PamdaDataFlowStarter.currentContext));
  80. List<String> inputFilePaths = new ArrayList<String>();
  81. inputFilePaths.add(dataFlowParameters.getString(PamdaDataFlowStarter.catalogueFilename));
  82. catalogueExporter.export(dataFlowParameters.getString(PamdaDataFlowStarter.cataloguePath) + File.separator + dataFlowParameters.getString(PamdaDataFlowStarter.catalogueFilename), dataFlowParameters.getString(PamdaDataFlowStarter.catalogueCode), dataFlowParameters.getString(PamdaDataFlowStarter.currentContext));
  83. //catalogueValidation
  84. catalogueValidation(dataFlowParameters);
  85. }
  86. public void catalogueValidation(DataFlowParameters dataFlowParameters) {
  87. String catalogueFilename = dataFlowParameters.getString(PamdaDataFlowStarter.catalogueFilename);
  88. String filePath = dataFlowParameters.getString(PamdaDataFlowStarter.cataloguePath);
  89. List<String> files = FileHelper.splitFilesParameter(filePath, catalogueFilename);
  90. xmlValidationService.validate( files, pamdaProperty.getCatalogueXSDfile());
  91. }
  92. }

there are other classes i use but i can't post them because of the 30,000 word limit imposed by stackoverFlow 如何解决使用名称 'dataFlowController' 创建错误 bean 的问题

can someone please help me to resolve this error ?

huangapple
  • 本文由 发表于 2020年4月8日 19:14:54
  • 转载请务必保留本文链接:https://java.coder-hub.com/61099366.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定