我正在将SpringBoot应用程序从1.5.6.release更新到2.3.5,但在生成项目时出现异常。下面是我的错误类:
@Configuration
@EnableBatchProcessing
@Import({BatchScheduler.class})
public class MyLogBatchConfiguration {
private static final Logger log = LoggerFactory.getLogger(VToolLogBatchConfiguration.class);
@Autowired private SimpleJobLauncher jobLauncher;
@Autowired
@Qualifier(value = "dataSource1")
public DataSource mainDataSource;
@Autowired
@Qualifier(value = "dataSource2")
public DataSource tempDataSource;
@Autowired public StepBuilderFactory stepBuilderFactory;
@Autowired public JobBuilderFactory jobBuilderFactory;
@Autowired private RestTemplate myRestTemplate;
@Qualifier(value = "createLocalSessionFactory")
@Autowired
private SessionFactory createLocalSessionFactory;
@Qualifier(value = "createSessionFactory")
@Autowired
private SessionFactory createSessionFactory;
@Bean
RestTemplate restTemplate(RestTemplateBuilder builder) {
RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters();
for (HttpMessageConverter<?> converter : converters) {
if (converter instanceof MappingJackson2HttpMessageConverter) {
MappingJackson2HttpMessageConverter jsonConverter =
(MappingJackson2HttpMessageConverter) converter;
jsonConverter.setObjectMapper(new ObjectMapper());
jsonConverter.setSupportedMediaTypes(
ImmutableList.of(
new MediaType(
"application", "json", MappingJackson2HttpMessageConverter.DEFAULT_CHARSET),
new MediaType(
"text", "javascript", MappingJackson2HttpMessageConverter.DEFAULT_CHARSET)));
}
}
return restTemplate;
}
@Bean
public LocalSessionFactoryBean createLocalSessionFactory(
@Qualifier("dataSource1") DataSource dataSource) {
LocalSessionFactoryBean factory = new LocalSessionFactoryBean();
factory.setDataSource(dataSource);
factory.setPackagesToScan(
new String[] {
"X",
"Y",
"Z"
});
factory.setHibernateProperties(hibernateProperties());
return factory;
}
@Bean
public LocalSessionFactoryBean createSessionFactory(
@Qualifier("dataSource2") DataSource dataSource) {
LocalSessionFactoryBean factory = new LocalSessionFactoryBean();
factory.setDataSource(dataSource);
factory.setPackagesToScan(
new String[] {
"X",
"Y",
"Z"
});
factory.setHibernateProperties(hibernateProperties());
return factory;
}
我收到以下错误:
org.springframework.beans.factory.unsatifieddependencyException:创建名为“mylogbatchconfiguration”的bean时出错:通过字段“myrestemplate”表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.unsatifieddependencyException:创建名为“batchconfiguration”的bean时出错:通过字段“myrestemplate”表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.beancreationexception:创建名为“restemplate”的bean时出错,该bean在类路径资源[com//configuration/mylogbatchconfiguration.class]中定义:通过工厂方法示例化bean失败;嵌套异常为org.springframework.beans.beaninstantiationexception:未能示例化[org.springframework.web.client.resttemplate]:涉及包含bean的循环引用“mylogbatchconfiguration”-请考虑将工厂方法声明为静态,以独立于其包含示例。工厂方法“resttemplate”引发异常;嵌套的异常是org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredFeldElement.inject(autowiredannotationbeanpostprocessor)的java.lang.nullpointerexception。java:643)位于org.springframework.beans.factory.annotation.injectionmetadata.injector(injectionmetadata)。java:130)在org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocessproperties(autowiredannotationbeanpostprocessor)。java:399)位于org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.populatebean(abstractautowirecapablebeanfactory)。java:1420)在org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory)。java:593)位于org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory)。java:516)在org.springframework.beans.factory.support.abstractbeanfactory.lambda$dogetbean$0(abstractbeanfactory)。java:324)]在sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl。java:43)在java.lang.reflect.method.invoke(方法。java:498)在org.springframework.boot.loader.mainmethodrunner.run(mainmethodrunner。java:49)在org.springframework.boot.loader.launcher.launcher(launcher。java:107)在org.springframework.boot.loader.launcher.launch(launcher。java:58)在org.springframework.boot.loader.jarlauncher.main(jarlauncher。java:88)原因:org.springframework.beans.factory.unsatifieddependencyException:创建名为“batchconfiguration”的bean时出错:未满足通过字段“myrestemplate”表示的依赖关系;嵌套异常为org.springframework.beans.factory.beancreationexception:创建名为“restemplate”的bean时出错,该bean在类路径资源[com//configuration/mylogbatchconfiguration.class]中定义:通过工厂方法示例化bean失败;嵌套异常为org.springframework.beans.beaninstantiationexception:未能示例化[org.springframework.web.client.resttemplate]:涉及包含bean的循环引用“mylogbatchconfiguration”-请考虑将工厂方法声明为静态,以独立于其包含示例。工厂方法“resttemplate”引发异常;嵌套的异常是org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredFeldElement.inject(autowiredannotationbeanpostprocessor)的java.lang.nullpointerexception。java:643)位于org.springframework.beans.factory.annotation.injectionmetadata.injector(injectionmetadata)。java:130)在org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocessproperties(autowiredannotationbeanpostprocessor)。java:399)位于org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.populatebean(abstractautowirecapablebeanfactory)。java:1420)在org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory)。java:322)在org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory。java:202)在org.springframework.beans.factory.config.dependencydescriptor.resolvecandidate(dependencydescriptor。java:276)在org.springframework.beans.factory.support.defaultlistablebeanfactory.doresolvedependency(defaultlistablebeanfactory)。java:1307)位于org.springframework.beans.factory.support.defaultlistablebeanfactory.resolvedependency(defaultlistablebeanfactory)。java:1227)在org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredFeldElement.inject(autowiredannotationbeanpostprocessor)。java:640) ... 28由于以下原因而忽略的公共帧:org.springframework.beans.factory.beancreationexception:创建名为“restemplate”的bean时出错,该bean在类路径资源[com/*/configuration/mylogbatchconfiguration.class]中定义:通过工厂方法示例化bean失败;嵌套异常为org.springframework.beans.beaninstantiationexception:未能示例化[org.springframework.web.client.resttemplate]:涉及包含bean的循环引用“mylogbatchconfiguration”-请考虑将工厂方法声明为静态,以独立于其包含示例。工厂方法“resttemplate”引发异常;嵌套的异常是java.lang.nullpointerexception,位于org.springframework.beans.factory.support.constructorresolver.instantiate(constructorresolver)。java:655)在org.springframework.beans.factory.support.constructorresolver.instantialEusingFactoryMethod(constructorresolver。java:635)在org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.instanceUsingFactoryMethod(abstractautowirecapablebeanfactory)。java:1336)位于org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbeaninstance(abstractautowirecapablebeanfactory)。java:1176)在org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory)。java:556)位于org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory)。java:516)在org.springframework.beans.factory.support.defaultlistablebeanfactory.doresolvedependency(defaultlistablebeanfactory)。java:1307)位于org.springframework.beans.factory.support.defaultlistablebeanfactory.resolvedependency(defaultlistablebeanfactory)。java:1227)在org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredFeldElement.inject(autowiredannotationbeanpostprocessor)。java:640) ... 50由于以下原因而忽略的公共框架:org.springframework.beans.beaninstantiationexception:未能示例化[org.springframework.web.client.resttemplate]:涉及包含bean的循环引用“mylogbatchconfiguration”-考虑将工厂方法声明为静态,以独立于其包含示例。工厂方法“resttemplate”引发异常;嵌套的异常是java.lang.nullpointerexception,位于org.springframework.beans.factory.support.simpleinstationstrategy.instantiate(simpleinstationstrategy)。java:185)在org.springframework.beans.factory.support.constructorresolver.instantiate(constructorresolver。java:650) ... 63由于java.lang.nullpointerexception:null在org.springframework.util.mimetype.(mimetype。java:143)在org.springframework.http.mediatype。java:433)
我省略了一些堆栈之间的跟踪,以保持重要的行在1.5.6.release版本中正常工作。我在这里看不到任何循环依赖关系。resttemplate函数也不依赖于mylogbatchconfiguration。我还试图改变顺序,将myrestemplatebean放在createsessionfactory bean之后,但仍然只有restemplate调用失败,而不是other。似乎other创建成功了。为什么要升级?任何帮助都将不胜感激。
暂无答案!
目前还没有任何答案,快来回答吧!