nullpointerexception mediatype

pn9klfpd  于 2021-07-16  发布在  Java
关注(0)|答案(1)|浏览(451)

我正在将SpringBoot应用程序从1.5.6.release更新到2.3.5,但在生成项目时出现异常。下面是我的错误类:

  1. @Configuration
  2. @EnableBatchProcessing
  3. @Import({BatchScheduler.class})
  4. public class MyLogBatchConfiguration {
  5. private static final Logger log = LoggerFactory.getLogger(MyLogBatchConfiguration.class);
  6. @Autowired private SimpleJobLauncher jobLauncher;
  7. @Autowired
  8. @Qualifier(value = "dataSource1")
  9. public DataSource mainDataSource;
  10. @Autowired
  11. @Qualifier(value = "dataSource2")
  12. public DataSource tempDataSource;
  13. @Autowired public StepBuilderFactory stepBuilderFactory;
  14. @Autowired public JobBuilderFactory jobBuilderFactory;
  15. @Autowired private RestTemplate myRestTemplate;
  16. @Qualifier(value = "createLocalSessionFactory")
  17. @Autowired
  18. private SessionFactory createLocalSessionFactory;
  19. @Qualifier(value = "createSessionFactory")
  20. @Autowired
  21. private SessionFactory createSessionFactory;
  22. @Bean
  23. RestTemplate restTemplate(RestTemplateBuilder builder) {
  24. RestTemplate restTemplate = new RestTemplate();
  25. List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters();
  26. for (HttpMessageConverter<?> converter : converters) {
  27. if (converter instanceof MappingJackson2HttpMessageConverter) {
  28. MappingJackson2HttpMessageConverter jsonConverter =
  29. (MappingJackson2HttpMessageConverter) converter;
  30. jsonConverter.setObjectMapper(new ObjectMapper());
  31. jsonConverter.setSupportedMediaTypes(
  32. ImmutableList.of(
  33. new MediaType(
  34. "application", "json", MappingJackson2HttpMessageConverter.DEFAULT_CHARSET),
  35. new MediaType(
  36. "text", "javascript", MappingJackson2HttpMessageConverter.DEFAULT_CHARSET)));
  37. }
  38. }
  39. return restTemplate;
  40. }
  41. @Bean
  42. public LocalSessionFactoryBean createLocalSessionFactory(
  43. @Qualifier("dataSource1") DataSource dataSource) {
  44. LocalSessionFactoryBean factory = new LocalSessionFactoryBean();
  45. factory.setDataSource(dataSource);
  46. factory.setPackagesToScan(
  47. new String[] {
  48. "X",
  49. "Y",
  50. "Z"
  51. });
  52. factory.setHibernateProperties(hibernateProperties());
  53. return factory;
  54. }
  55. @Bean
  56. public LocalSessionFactoryBean createSessionFactory(
  57. @Qualifier("dataSource2") DataSource dataSource) {
  58. LocalSessionFactoryBean factory = new LocalSessionFactoryBean();
  59. factory.setDataSource(dataSource);
  60. factory.setPackagesToScan(
  61. new String[] {
  62. "X",
  63. "Y",
  64. "Z"
  65. });
  66. factory.setHibernateProperties(hibernateProperties());
  67. return factory;
  68. }

出现以下错误:

  1. >
  2. org.springframework.beans.factory.UnsatisfiedDependencyException:
  3. > Error creating bean with name 'MyLogBatchConfiguration': Unsatisfied
  4. > dependency expressed through field 'myRestTemplate'; nested exception
  5. > is org.springframework.beans.factory.UnsatisfiedDependencyException:
  6. > Error creating bean with name 'batchConfiguration': Unsatisfied
  7. > dependency expressed through field 'myRestTemplate'; nested exception
  8. > is org.springframework.beans.factory.BeanCreationException: Error
  9. > creating bean with name 'restTemplate' defined in class path resource
  10. > [com//configuration/MyLogBatchConfiguration.class]: Bean instantiation
  11. > via factory method failed; nested exception is
  12. > org.springframework.beans.BeanInstantiationException: Failed to
  13. > instantiate [org.springframework.web.client.RestTemplate]: Circular
  14. > reference involving containing bean 'MyLogBatchConfiguration' -
  15. > consider declaring the factory method as static for independence from
  16. > its containing instance. Factory method 'restTemplate' threw
  17. > exception; nested exception is java.lang.NullPointerException at
  18. > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643)
  19. > at
  20. > org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130)
  21. > at
  22. > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399)
  23. > at
  24. > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420)
  25. > at
  26. > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593)
  27. > at
  28. > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)
  29. > at
  30. > org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)
  31. > ] at
  32. > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  33. > at java.lang.reflect.Method.invoke(Method.java:498) at
  34. > org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
  35. > at org.springframework.boot.loader.Launcher.launch(Launcher.java:107)
  36. > at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
  37. > at
  38. > org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)
  39. > Caused by:
  40. > org.springframework.beans.factory.UnsatisfiedDependencyException:
  41. > Error creating bean with name 'batchConfiguration': Unsatisfied
  42. > dependency expressed through field 'myRestTemplate'; nested exception
  43. > is org.springframework.beans.factory.BeanCreationException: Error
  44. > creating bean with name 'restTemplate' defined in class path resource
  45. > [com//configuration/MyLogBatchConfiguration.class]: Bean instantiation
  46. > via factory method failed; nested exception is
  47. > org.springframework.beans.BeanInstantiationException: Failed to
  48. > instantiate [org.springframework.web.client.RestTemplate]: Circular
  49. > reference involving containing bean 'MyLogBatchConfiguration' -
  50. > consider declaring the factory method as static for independence from
  51. > its containing instance. Factory method 'restTemplate' threw
  52. > exception; nested exception is java.lang.NullPointerException at
  53. > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643)
  54. > at
  55. > org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130)
  56. > at
  57. > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399)
  58. > at
  59. > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420)
  60. > at
  61. > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
  62. > at
  63. > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
  64. > at
  65. > org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
  66. > at
  67. > org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1307)
  68. > at
  69. > org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227)
  70. > at
  71. > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640)
  72. > ... 28 common frames omitted Caused by:
  73. > org.springframework.beans.factory.BeanCreationException: Error
  74. > creating bean with name 'restTemplate' defined in class path resource
  75. > [com/*/configuration/MyLogBatchConfiguration.class]: Bean
  76. > instantiation via factory method failed; nested exception is
  77. > org.springframework.beans.BeanInstantiationException: Failed to
  78. > instantiate [org.springframework.web.client.RestTemplate]: Circular
  79. > reference involving containing bean 'MyLogBatchConfiguration' -
  80. > consider declaring the factory method as static for independence from
  81. > its containing instance. Factory method 'restTemplate' threw
  82. > exception; nested exception is java.lang.NullPointerException at
  83. > org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:655)
  84. > at
  85. > org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:635)
  86. > at
  87. > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1336)
  88. > at
  89. > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1176)
  90. > at
  91. > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556)
  92. > at
  93. > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)
  94. > at
  95. > org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1307)
  96. > at
  97. > org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227)
  98. > at
  99. > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640)
  100. > ... 50 common frames omitted Caused by:
  101. > org.springframework.beans.BeanInstantiationException: Failed to
  102. > instantiate [org.springframework.web.client.RestTemplate]: Circular
  103. > reference involving containing bean 'MyLogBatchConfiguration' -
  104. > consider declaring the factory method as static for independence from
  105. > its containing instance. Factory method 'restTemplate' threw
  106. > exception; nested exception is java.lang.NullPointerException at
  107. > org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
  108. > at
  109. > org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:650)
  110. > ... 63 common frames omitted Caused by:
  111. > java.lang.NullPointerException: null at
  112. > org.springframework.util.MimeType.(MimeType.java:143) at
  113. > org.springframework.http.MediaType.(MediaType.java:433)

为了保留重要的行,我省略了一些堆栈之间的跟踪。在1.5.6版本中运行良好。主要原因是最后一行,它与
mimetype.java媒体类型.java
并引发空指针异常。如何正确传递mediatypes?我确实在eclipse中看到一个警告:

  1. The field AbstractJackson2HttpMessageConverter.DEFAULT_CHARSET is
  2. deprecated

任何处理空媒体类型的解决方法都是值得赞赏的。

dxxyhpgq

dxxyhpgq1#

这是2.2.0 spring boot的问题。他们为默认字符集编码设置了弃用。
尝试用以下两种类型替换。json和文本,

  1. new MediaType("application", "json", MappingJackson2HttpMessageConverter. StandardCharsets.UTF_8))

相关问题