зависимости включены в ваш pom.xml или build.gradle файл. 2. Логи приложения проверьте: Обратите внимание на любые сообщения об ошибках или предупреждения, связанные с Feign или другими зависимостями. 3. Конфигурационные файлы проверьте: Убедитесь, что ваши конфигурационные файлы правильно настроены для использования Feign. 4. Дебаггер используйте: Отладьте код, чтобы проверить, как он выполняется после обновления, и выявить возможные проблемы. 5. Документацию проверьте: Убедитесь, что вы используете правильные методы и подходы для работы с Feign в новой версии Spring Boot. 6. Примеры проверьте: Посмотрите примеры использования Feign в документации Spring Boot или других источников, чтобы сравнить их со своим кодом. 7. Сообщения об ошибках проверьте: Если есть какие-либо сообщения об ошибках, попробуйте найти информацию о них в интернете или обратиться за помощью на форумах. 8. Совместимость проверьте: Убедитесь, что все используемые библиотеки совместимы с версией Spring Boot 1.6.3. Если проблема сохраняется, рекомендуется обратиться за помощью на форумах или в службу поддержки Spring Boot. Обновление Spring Boot с версии 1.5.36 до 1.6.3 привело к проблеме запуска проекта, где все компоненты Forest-Feign не находятся. Как можно выполнить диагностику этой проблемы? 1. Проверьте конфигурацию: Убедитесь, что все необходимые зависимости включены в ваш pom.xml или build.gradle. 2. Проверьте логи приложения: Обратите внимание на любые сообщения об ошибках или предупреждения, связанные с Feign или другими зависимостями. 3. Проверьте конфигурационные файлы: Убедитесь, что ваши конфигурационные файлы правильно настроены для использования Feign. 4. Используйте дебаггер: Отладьте код, чтобы проверить, как он выполняется после обновления, и выявить возможные проблемы. 5. Проверьте документацию: Убедитесь, что вы используете правильные методы и подходы для работы с Feign в новой версии Spring Boot. 6. Проверьте примеры: Посмотрите примеры использования Feign в документации Spring Boot или других источниках, чтобы сравнить их со своим кодом. 7. Проверьте сообщения об ошибках: Если есть какие-либо сообщения об ошибках, попробуйте найти информацию о них в интернете или обратиться за помощью на форумах. 8. Проверьте совместимость: Убедитесь, что все используемые библиотеки совместимы с версией Spring Boot 1.6.3. Если проблема сохраняется, рекомендуется обратиться за помощью на форумах или в службу поддержки Spring Boot.
Forest: версия
Backend: (okhttp или httpclient)/версия
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.13</version>
<relativePath/> <!-- Указывает родителя из репозитория -->
</parent>
<!-- Этот вариант всегда работал корректно, запросы выполнялись нормально -->
<!-- https://forest.dtflyx.com/ -->
<dependency>
<groupId>com.dtflys.forest</groupId>
<artifactId>forest-spring-boot-starter</artifactId>
<version>1.5.36</version>
</dependency>
<!-- После перехода на эту версию проект не смог запуститься, сообщение об ошибке было связано с внедрением зависимости -->
<!-- https://forest.dtflyx.com/ -->
<dependency>
<groupId>com.dtflys.forest</groupId>
<artifactId>forest-spring-boot-starter</artifactId>
<version>1.6.3</version>
</dependency>
```##### Ошибочное сообщение / полный лог запроса (если нет лога запроса, пожалуйста, включите его)
```plaintext
2025-01-28 23:28:57.034 ERROR 17568 --- [ main] o.s.t.c.TestContextManager : Caught exception while allowing TestExecutionListener [org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@6b5966e1] to prepare test instance [work.linruchang.chatgptweb.ChatGptWebApplicationTests@13515709]
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'work.linruchang.chatgptweb.ChatGptWebApplicationTests': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: Нет подходящего бинда типа 'work.linruchang.chatgptweb.feign.GuoHeBaoKeFeign'. Ожидается хотя бы один бинд, который может быть автоматически внедрен. Зависимость аннотирована: {@javax.annotation.Resource(shareable=true, lookup="", name="", description="", authenticationType=CONTAINER, type=class java.lang.Object, mappedName="")}
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:332) ~[spring-context-5.3.28.jar:5.3.28]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431) ~[spring-beans-5.3.28.jar:5.3.28]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:417) ~[spring-beans-5.3.28.jar:5.3.28]
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:119) ~[spring-test-5.3.28.jar:5.3.28]
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) ~[spring-test-5.3.28.jar:5.3.28]
at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.
``````java
java:43) ~[spring-boot-test-autoconfigure-2.7.13.jar:2.7.13]
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:248) ~[spring-test-5.3.28.jar:5.3.28]
at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:138) [spring-test-5.3.28.jar:5.3.28]
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$8(ClassBasedTestDescriptor.java:363) [junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.executeAndMaskThrowable(ClassBasedTestDescriptor.java:368) [junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$9(ClassBasedTestDescriptor.java:363) [junit-jupiter-engine-5.8.2.jar:5.8.2]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_261]
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[na:1.8.0_261]
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1384) ~[na:1.8.0_261]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) ~[na:1.8.0_261]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) ~[na:1.8.0_261]
at java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312) ~[na:1.8.0_261]
at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:743) ~[na:1.8.0_261]
at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742) ~[na:1.8.0_261]
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) ~[na:1.8.0_261]
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestInstancePostProcessors(ClassBasedTestDescriptor.java:362) [junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$instantiateAndPostProcessTestInstance$6(ClassBasedTestDescriptor.java:283) [junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:273) [junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.ClassTestTemplateExecutor.instantiateTestClass(ClassTestTemplateExecutor.java:52) [junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$createTests$0(ExecutableInvoker.java:63) [junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor.lambda$createTestDescriptorsFromTestFactory$1(TestFactoryTestDescriptor.java:139) [junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor.lambda$null$2(TestFactoryTestDescriptor.java:106) [junit-jupiter-engine-5.8.2.jar:5.8.2]
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:176) ~[na:1.8.0_261]
at org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor.lambda$testFactory$3(TestFactoryTestDescriptor.java:132) [junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor.lambda$null$4(TestFactoryTestDescriptor.java:145) [junit-jupiter-engine-5.8.2.jar:5.8.2]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[na:1.8.0_261]
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) ~[na:1.8.0_261]
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) ~[na:1.8.0_261]
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:583) ~[na:1.8.0_261]
Также исправлены некоторые ошибки в тексте:
java:43) ~[spring-boot-test-autoconfigure-2.7.13.jar:2.7.13]
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:248) ~[spring-test-5.3.28.jar:5.3.28]
at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:138) ~[spring-test-5.3.28.jar:5.3.28]
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$8(ClassBasedTestDescriptor.java:363) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.executeAndMaskThrowable(ClassBasedTestDescriptor.java:368) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$9(ClassBasedTestDescriptor.java:363) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_261]
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[na:1.8.0_261]
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1384) ~[na:1.8.0_261]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) ~[na:1.8.0_261]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) ~[na:1.8.0_261]
at java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312) ~[na:1.8.0_261]
at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:743) ~[na:1.8.0_261]
at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742) ~[na:1.8.0_261]
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) ~[na:1.8.0_261]
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestInstancePostProcessors(ClassBasedTestDescriptor.java:362) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$instantiateAndPostProcessTestInstance$6(ClassBasedTestDescriptor.java:283) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:273) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.ClassTestTemplateExecutor.instantiateTestClass(ClassTestTemplateExecutor.java:52) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$createTests$0(ExecutableInvoker.java:63) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor.lambda$createTestDescriptorsFromTestFactory$1(TestFactoryTestDescriptor.java:139) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor.lambda$null$2(TestFactoryTestDescriptor.java:106) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:176) ~[na:1.8.0_261]
at org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor.lambda$testFactory$3(TestFactoryTestDescriptor.java:132) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor.lambda$null$4(TestFactoryTestDescriptor.java:145) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[na:1.8.0_261]
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) ~[na:1.8.0_261]
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) ~[na:1.8.0_261]
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:583) ~[na:1.8.0_261]
```junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:282) [junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$4(ClassBasedTestDescriptor.java:272) [junit-jupiter-engine-5.8.2.jar:5.8.2]
at java.util.Optional.orElseGet(Optional.java:267) ~[na:1.8.0_261]
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$5(ClassBasedTestDescriptor.java:271) [junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances(TestInstancesProvider.java:31) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$prepare$0(TestMethodTestDescriptor.java:102) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:101) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:66) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$prepare$2(NodeTestTask.java:123) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.prepare(NodeTestTask.java:123) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:90) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at java.util.ArrayList.forEach(ArrayList.java:1259) ~[na:1.8.0_261]
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:148)java:155) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at java.util.ArrayList.forEach(ArrayList.java:1259) ~[na:1.8.0_261]
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.8.2.jar:1.8.2]NodeTestTask.executeRecursively(NodeTestTask.java:138) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) ~[junit-platform-engine-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57) ~[junit5-rt.jar:na]
at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) ~[junit-rt.jar:na]
at com.```java
intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) ~[idea_rt.jar:na]
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) ~[junit-rt.jar:na]
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) ~[junit-rt.jar:na]
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55) ~[junit-rt.jar:na]
Также:
intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) ~[idea_rt.jar:na]
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) ~[junit-rt.jar:na]
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) ~[junit-rt.jar:na]
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55) ~[junit-rt.jar:na]
```Причина: org.springframework.beans.factory.NoSuchBeanDefinitionException: Нет подходящего бин типа 'work.linruchang.chatgptweb.feign.GuoHeBaoKeFeign': доступно 0 бинов, удовлетворяющих требованиям автовязки. Аннотация зависимости: {@javax.annotation.Resource(shareable=true, lookup="", name="", description="", authenticationType=CONTAINER, type=class java.lang.Object, mappedName="")}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1801) ~[spring-beans-5.3.28.jar:5.3.28]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1357) ~[spring-beans-5.3.28.jar:5.3.28]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) ~[spring-beans-5.3.28.jar:5.3.28]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java)
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем 'commonAnnotationBeanPostProcessor', определенного в класс путь ресурс [org/springframework/context/config/common-annotation.xml]: Инициализация бина не удалась; вложенный异常是:java.lang.IllegalArgumentException (spring-context-5.3.28.jar:5.3.28)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessBeforeInitialization(CommonAnnotationBeanPostProcessor.java:544) ~[spring-context-5.3.28.jar:5.3.28]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:520) ~[spring-context-5.3.28.jar:5.3.28]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:673) ~[spring-context-5.3.28.jar:5.3.28]
at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:228) ~[spring-beans-5.3.28.jar:5.3.28]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.3.28.jar:5.3.28]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessBeforeInitialization(CommonAnnotationBeanPostProcessor.java:544) ~[spring-context-5.3.28.jar:5.3.28]CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:329) ~[spring-context-5.3.28.jar:5.3.28]
... 73 общих кадра опущены
```### Определение интерфейса (при необходимости предоставьте)
```java
/**
* Интерфейс для получения списка статей
* https://www.ghxi.com
* @author LinRuChang
* @version 1.0
* @date 2023/09/13
* @since 1.8
**/
public interface GuoHeBaoKeFeign {
/**
* Получение списка программ
*
* @param n тип программы: компьютер (PC), Андроид (AND) смотрите {@link SoftwareTypeEnum#getType()}
* @return
*/
@GetRequest(url = "https://www.ghxi.com/ghapi?type=query")
GuoHeBaoKeFeignResult getSoftwareDataListResult(@Query(value = "n", defaultValue = "pc") String n);
default List<GuoHeBaoKeFeignResultDataSoftwareInfo> getSoftwareDataList(SoftwareTypeEnum softwareTypeEnum) {
softwareTypeEnum = ObjUtil.defaultIfNull(softwareTypeEnum, SoftwareTypeEnum.PC);
GuoHeBaoKeFeign guoHeBaoKeFeign = SpringUtil.getBean(GuoHeBaoKeFeign.class);
GuoHeBaoKeFeignResult softwareDataListResult = guoHeBaoKeFeign.getSoftwareDataListResult(softwareTypeEnum.getType());
List<GuoHeBaoKeFeignResultDataSoftwareInfo> result = Convert.toList(GuoHeBaoKeFeignResultDataSoftwareInfo.class, BeanUtil.getProperty(softwareDataListResult, "data.list"));
return result;
}
}
``````java
/**
* Поиск программ
*
* @param s имя программы для поиска
* @return
*/
@GetRequest(
url = "https://www.ghxi.com",
headers = {
"Accept-Language: en-GB;q=0.7, en-US;q=0.6"
}
)
String[] headers = {
"Accept-Language: en-GB;q=0.7, en-US;q=0.6",
"Cache-Control: no-cache",
"Connection: keep-alive",
"Pragma: no-cache",
"Referer: https://www.ghxi.com/?s=navicat",
"Sec-Fetch-Dest: document",
"Sec-Fetch-Mode: navigate",
"Sec-Fetch-Site: same-origin",
"Sec-Fetch-User: ?1",
"Upgrade-Insecure-Requests: 1",
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.76",
"sec-ch-ua: \"Chromium\";v=\"116\", \"Not)A;Brand\";v=\"24\", \"Microsoft Edge\";v=\"116\"",
"sec-ch-ua-mobile: ?0",
"sec-ch-ua-platform: \"Windows\"",
};
}
String getSoftwareDataListSearchHtml(@Query(value = "s", defaultValue = "navicat") String s);
default List<GuoHeBaoKeFeignResultDataSoftwareInfo> getSoftwareSearchDataList(String s) {
GuoHeBaoKeFeign guoHeBaoKeFeign = SpringUtil.getBean(GuoHeBaoKeFeign.class);
String htmlContent = guoHeBaoKeFeign.getSoftwareDataListSearchHtml(s);
Document htmlParse = Jsoup.parse(htmlContent);
Elements articleElements = htmlParse.select(".main .sec-panel-body .post-loop .item .item-content");
// articleElements.forEach(articleElement -> System.out.println(articleElement.text()));
List<GuoHeBaoKeFeignResultDataSoftwareInfo> result = articleElements.stream()
.map(articleElement -> {
GuoHeBaoKeFeignResultDataSoftwareInfo guoHeBaoKeFeignResultDataSoftwareInfo = new GuoHeBaoKeFeignResultDataSoftwareInfo();
Element aElement = articleElement.selectFirst("a");
guoHeBaoKeFeignResultDataSoftwareInfo.setUrl(aElement.attr("href"));
guoHeBaoKeFeignResultDataSoftwareInfo.setTitle(StrUtil.trim(aElement.text()));
Element abbreviationsContentElement = articleElement.selectFirst(".item-excerpt");
guoHeBaoKeFeignResultDataSoftwareInfo.setAbbreviationsContent(abbreviationsContentElement.text());
Element dateElement = articleElement.selectFirst(".date");
String dateContent = StrUtil.trim(dateElement.text());
DateTime date = null;
if (StrUtil.containsAnyIgnoreCase(dateContent, "days ago")) {
Integer dayCount = Convert.toInt(CollUtil.getFirst(ReUtil.findAllGroup0(Validator.NUMBERS, dateContent)), 0);
date = DateUtil.offsetDay(DateUtil.date(), -dayCount);
} else if (StrUtil.containsAnyIgnoreCase(dateContent, "hours ago")) {
Integer hourCount = Convert.toInt(CollUtil.getFirst(ReUtil.findAllGroup0(Validator.NUMBERS, dateContent)), 0);
date = DateUtil.offsetHour(DateUtil.date(), -hourCount);
} else if (StrUtil.containsAnyIgnoreCase(dateContent, "minutes ago")) {
Integer minuteCount = Convert.toInt(CollUtil.getFirst(ReUtil.findAllGroup0(Validator.NUMBERS, dateContent)), 0);
date = DateUtil.offsetMinute(DateUtil.date(), -minuteCount);
} else {
date = DateUtil.parse(dateContent);
}
guoHeBaoKeFeignResultDataSoftwareInfo.setTime(date);
return guoHeBaoKeFeignResultDataSoftwareInfo;
})
.collect(Collectors.toList());
return result;
}
}