无法在添加了JPA Maven依赖后运行Spring Boot应用程序。

huangapple go评论106阅读模式
英文:

Cannot run spring boot app after adding Jpa maven dependency

问题

I started a spring boot app based on the heroku's sample app, following their tutorial.

I'm running a postgres docker container to which the app can connect correctly. Now I'd like to use Hibernate (following this Baeldung guide but when I add the Jpa dependency :

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-jpa</artifactId>
  4. </dependency>

Then I get the following error upon running the app :

  1. Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry' available

I don't understand this error and can't find much about it (or I don't understand). I was suggested to check the config, although I'm not sure what I would be missing.

Here are some of the files in the project :

application.properties

  1. ########## Original config (Heroku template)
  2. spring.datasource.url: jdbc:postgresql://localhost:5432/postgres?user=postgres&password=postgres
  3. spring.datasource.hikari.connection-timeout=30000
  4. spring.datasource.hikari.maximum-pool-size=10
  5. spring.thymeleaf.mode=HTML
  6. logging.level.org.springframework=INFO
  7. spring.profiles.active=production
  8. server.port=${PORT:5000}

pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns="http://maven.apache.org/POM/4.0.0"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.example</groupId>
  7. <artifactId>java-getting-started</artifactId>
  8. <version>1.0</version>
  9. <parent>
  10. <groupId>org.springframework.boot</groupId>
  11. <artifactId>spring-boot-starter-parent</artifactId>
  12. <version>2.3.0.RELEASE</version>
  13. <relativePath/>
  14. </parent>
  15. <name>java-getting-started</name>
  16. <properties>
  17. <java.version>1.8</java.version>
  18. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  19. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  20. <webjars-bootstrap.version>4.1.3</webjars-bootstrap.version>
  21. <webjars-jquery-ui.version>1.12.1</webjars-jquery-ui.version>
  22. <webjars-jquery.version>3.3.1-1</webjars-jquery.version>
  23. </properties>
  24. <dependencies>
  25. <!-- dependencies... -->
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-starter-data-jpa</artifactId>
  29. </dependency>
  30. <!-- other dependencies... -->
  31. </dependencies>
  32. <build>
  33. <!-- build configuration... -->
  34. </build>
  35. </project>

DbService.java service to connect to db

  1. // DbService code...

Main.java

  1. // Main class code...

UserService.java

  1. // UserService code...

My IDE (IntelliJ) correctly imports the dependency, and I can use various hibernate annotations on my models, but the issue is when running the app. Any advice is greatly welcome, thanks!

Edit: full error stack

  1. // Full error stack...
英文:

I started a spring boot app based on the heroku's sample app, following their tutorial.

I'm running a postgres docker container to which the app can connect correctly. Now I'd like to use Hibernate (following this Baeldung guide but when I add the Jpa dependency :

  1. &lt;dependency&gt;
  2. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  3. &lt;artifactId&gt;spring-boot-starter-data-jpa&lt;/artifactId&gt;
  4. &lt;/dependency&gt;

Then I get the following error upon running the app :

  1. Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named &#39;org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry&#39; available

I don't understand this error and can't find much about it (or I don't understand). I was suggested to check the config, although I'm not sure what I would missing.

Here are some of the files in the project :

application.properties

  1. ########## Original config (Heroku template)
  2. spring.datasource.url: jdbc:postgresql://localhost:5432/postgres?user=postgres&amp;password=postgres
  3. spring.datasource.hikari.connection-timeout=30000
  4. spring.datasource.hikari.maximum-pool-size=10
  5. spring.thymeleaf.mode=HTML
  6. logging.level.org.springframework=INFO
  7. spring.profiles.active=production
  8. server.port=${PORT:5000}

pom.xml

  1. &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
  2. &lt;project xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  3. xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;
  4. xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;&gt;
  5. &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  6. &lt;groupId&gt;com.example&lt;/groupId&gt;
  7. &lt;artifactId&gt;java-getting-started&lt;/artifactId&gt;
  8. &lt;version&gt;1.0&lt;/version&gt;
  9. &lt;parent&gt;
  10. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  11. &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
  12. &lt;version&gt;2.3.0.RELEASE&lt;/version&gt;
  13. &lt;relativePath/&gt;
  14. &lt;/parent&gt;
  15. &lt;name&gt;java-getting-started&lt;/name&gt;
  16. &lt;properties&gt;
  17. &lt;java.version&gt;1.8&lt;/java.version&gt;
  18. &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
  19. &lt;project.reporting.outputEncoding&gt;UTF-8&lt;/project.reporting.outputEncoding&gt;
  20. &lt;webjars-bootstrap.version&gt;4.1.3&lt;/webjars-bootstrap.version&gt;
  21. &lt;webjars-jquery-ui.version&gt;1.12.1&lt;/webjars-jquery-ui.version&gt;
  22. &lt;webjars-jquery.version&gt;3.3.1-1&lt;/webjars-jquery.version&gt;
  23. &lt;/properties&gt;
  24. &lt;dependencies&gt;
  25. &lt;dependency&gt;
  26. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  27. &lt;artifactId&gt;spring-boot-starter-actuator&lt;/artifactId&gt;
  28. &lt;/dependency&gt;
  29. &lt;dependency&gt;
  30. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  31. &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
  32. &lt;/dependency&gt;
  33. &lt;dependency&gt;
  34. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  35. &lt;artifactId&gt;spring-boot-starter-thymeleaf&lt;/artifactId&gt;
  36. &lt;exclusions&gt;
  37. &lt;exclusion&gt;
  38. &lt;groupId&gt;nz.net.ultraq.thymeleaf&lt;/groupId&gt;
  39. &lt;artifactId&gt;thymeleaf-layout-dialect&lt;/artifactId&gt;
  40. &lt;/exclusion&gt;
  41. &lt;/exclusions&gt;
  42. &lt;/dependency&gt;
  43. &lt;dependency&gt;
  44. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  45. &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
  46. &lt;scope&gt;test&lt;/scope&gt;
  47. &lt;/dependency&gt;
  48. &lt;dependency&gt;
  49. &lt;groupId&gt;org.postgresql&lt;/groupId&gt;
  50. &lt;artifactId&gt;postgresql&lt;/artifactId&gt;
  51. &lt;/dependency&gt;
  52. &lt;dependency&gt;
  53. &lt;groupId&gt;com.zaxxer&lt;/groupId&gt;
  54. &lt;artifactId&gt;HikariCP&lt;/artifactId&gt;
  55. &lt;/dependency&gt;
  56. &lt;dependency&gt;
  57. &lt;groupId&gt;org.webjars&lt;/groupId&gt;
  58. &lt;artifactId&gt;jquery&lt;/artifactId&gt;
  59. &lt;version&gt;${webjars-jquery.version}&lt;/version&gt;
  60. &lt;/dependency&gt;
  61. &lt;dependency&gt;
  62. &lt;groupId&gt;org.webjars&lt;/groupId&gt;
  63. &lt;artifactId&gt;jquery-ui&lt;/artifactId&gt;
  64. &lt;version&gt;${webjars-jquery-ui.version}&lt;/version&gt;
  65. &lt;/dependency&gt;
  66. &lt;dependency&gt;
  67. &lt;groupId&gt;org.webjars&lt;/groupId&gt;
  68. &lt;artifactId&gt;bootstrap&lt;/artifactId&gt;
  69. &lt;version&gt;${webjars-bootstrap.version}&lt;/version&gt;
  70. &lt;/dependency&gt;
  71. &lt;dependency&gt;
  72. &lt;groupId&gt;org.webjars&lt;/groupId&gt;
  73. &lt;artifactId&gt;webjars-locator&lt;/artifactId&gt;
  74. &lt;version&gt;0.30&lt;/version&gt;
  75. &lt;/dependency&gt;
  76. &lt;dependency&gt;
  77. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  78. &lt;artifactId&gt;spring-boot-devtools&lt;/artifactId&gt;
  79. &lt;scope&gt;runtime&lt;/scope&gt;
  80. &lt;/dependency&gt;
  81. &lt;!-- additional dependencies --&gt;
  82. &lt;dependency&gt;
  83. &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt;
  84. &lt;artifactId&gt;jackson-databind&lt;/artifactId&gt;
  85. &lt;version&gt;2.11.1&lt;/version&gt;
  86. &lt;/dependency&gt;
  87. &lt;dependency&gt;
  88. &lt;groupId&gt;com.google.code.gson&lt;/groupId&gt;
  89. &lt;artifactId&gt;gson&lt;/artifactId&gt;
  90. &lt;version&gt;2.8.6&lt;/version&gt;
  91. &lt;/dependency&gt;
  92. &lt;dependency&gt;
  93. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  94. &lt;artifactId&gt;spring-boot-starter-data-jpa&lt;/artifactId&gt;
  95. &lt;/dependency&gt;
  96. &lt;/dependencies&gt;
  97. &lt;build&gt;
  98. &lt;plugins&gt;
  99. &lt;plugin&gt;
  100. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  101. &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
  102. &lt;executions&gt;
  103. &lt;execution&gt;
  104. &lt;goals&gt;
  105. &lt;goal&gt;build-info&lt;/goal&gt;
  106. &lt;/goals&gt;
  107. &lt;configuration&gt;
  108. &lt;additionalProperties&gt;
  109. &lt;encoding.source&gt;${project.build.sourceEncoding}&lt;/encoding.source&gt;
  110. &lt;encoding.reporting&gt;${project.reporting.outputEncoding}&lt;/encoding.reporting&gt;
  111. &lt;java.source&gt;${maven.compiler.source}&lt;/java.source&gt;
  112. &lt;java.target&gt;${maven.compiler.target}&lt;/java.target&gt;
  113. &lt;/additionalProperties&gt;
  114. &lt;/configuration&gt;
  115. &lt;/execution&gt;
  116. &lt;/executions&gt;
  117. &lt;/plugin&gt;
  118. &lt;/plugins&gt;
  119. &lt;/build&gt;
  120. &lt;/project&gt;

DbService.java service to connect to db

  1. package com.example.service;
  2. import com.zaxxer.hikari.HikariConfig;
  3. import com.zaxxer.hikari.HikariDataSource;
  4. import javax.sql.DataSource;
  5. import java.sql.Connection;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.beans.factory.annotation.Value;
  10. import org.springframework.context.annotation.Bean;
  11. import org.springframework.stereotype.Service;
  12. @Service
  13. public class DbService {
  14. @Value(&quot;${spring.datasource.url}&quot;)
  15. private String dbUrl;
  16. @Autowired
  17. private DataSource dataSource;
  18. public List&lt;User&gt; fetchUsers(String query) {
  19. try (Connection connection = dataSource.getConnection()) {
  20. Statement stmt = connection.createStatement();
  21. ResultSet resultSet = stmt.executeQuery(query);
  22. List&lt;User&gt; output = new ArrayList&lt;&gt;();
  23. while (resultSet.next()) {
  24. User user = new User();
  25. user.setId(Long.valueOf(resultSet.getString(&quot;id&quot;)));
  26. user.setTitle(resultSet.getString(&quot;name&quot;));
  27. output.add(user);
  28. }
  29. return output;
  30. } catch (Exception e) {
  31. System.out.println(&quot;Oops : &quot; + e);
  32. }
  33. return null;
  34. }
  35. @Bean
  36. public DataSource dataSource() throws SQLException {
  37. if (dbUrl == null || dbUrl.isEmpty()) {
  38. return new HikariDataSource();
  39. } else {
  40. HikariConfig config = new HikariConfig();
  41. config.setJdbcUrl(dbUrl);
  42. return new HikariDataSource(config);
  43. }
  44. }
  45. }

Main.java

  1. package com.example;
  2. @Controller
  3. @SpringBootApplication
  4. public class Main {
  5. @Autowired
  6. private UserService userService;
  7. public static void main(String[] args) throws Exception {
  8. SpringApplication.run(Main.class, args);
  9. }
  10. @GetMapping(value = &quot;/listUsers&quot;)
  11. @ResponseBody
  12. public String listUsers() {
  13. User user = this.userService.listUsers().stream().findFirst().orElse(null);
  14. return user != null ? user.getName() : &quot;No user&quot;;
  15. }
  16. }

UserService.java

  1. @Service
  2. public class UserService {
  3. @Autowired
  4. private DbService dbService;
  5. public List&lt;User&gt; listUsers() {
  6. StringBuilder fetchQuery = new StringBuilder();
  7. fetchQuery.append(&quot;SELECT * FROM user&quot;);
  8. System.out.println(&quot;Fetching with query : &quot; + fetchQuery.toString());
  9. List&lt;User&gt; users = this.dbService.fetchUsers(fetchQuery.toString());
  10. return users;
  11. }
  12. }

My IDE (IntelliJ) correctly imports the dependency, and I can use various hibernate annotations on my models, but the issue is when running the app. Any advice is greatly welcome, thanks!

Edit: full error stack

  1. org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name &#39;org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration&#39;: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name &#39;dbService&#39;: Unsatisfied dependency expressed through field &#39;dataSource&#39;; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name &#39;dataSource&#39;: Requested bean is currently in creation: Is there an unresolvable circular reference?
  2. at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  3. at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:228) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  4. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1358) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  5. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1204) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  6. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  7. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  8. at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  9. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  10. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  11. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  12. at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:409) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  13. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  14. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  15. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  16. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  17. at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  18. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  19. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  20. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  21. at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1108) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  22. at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:868) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  23. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  24. Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name &#39;dbService&#39;: Unsatisfied dependency expressed through field &#39;dataSource&#39;; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name &#39;dataSource&#39;: Requested bean is currently in creation: Is there an unresolvable circular reference?
  25. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  26. at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  27. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  28. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1422) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  29. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  30. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  31. at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  32. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  33. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  34. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  35. at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:409) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  36. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  37. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  38. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  39. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  40. at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  41. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  42. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  43. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  44. ... 34 common frames omitted
  45. Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name &#39;dataSource&#39;: Requested bean is currently in creation: Is there an unresolvable circular reference?
  46. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.beforeSingletonCreation(DefaultSingletonBeanRegistry.java:347) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  47. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:219) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  48. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  49. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  50. at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  51. at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1306) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  52. at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1226) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  53. at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  54. ... 57 common frames omitted
  55. 2020-08-23 14:42:50.784 WARN 77261 --- [ restartedMain] o.s.boot.SpringApplication : Unable to close ApplicationContext
  56. org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#39;applicationAvailability&#39; defined in class path resource [org/springframework/boot/autoconfigure/availability/ApplicationAvailabilityAutoConfiguration.class]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#39;org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration&#39;: Initialization of bean failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named &#39;org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry&#39; available
  57. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:512) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  58. at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  59. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  60. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  61. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  62. at org.springframework.context.event.AbstractApplicationEventMulticaster.retrieveApplicationListeners(AbstractApplicationEventMulticaster.java:245) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  63. at org.springframework.context.event.AbstractApplicationEventMulticaster.getApplicationListeners(AbstractApplicationEventMulticaster.java:197) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  64. at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:134) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  65. at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:403) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  66. at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:360) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  67. at org.springframework.boot.availability.AvailabilityChangeEvent.publish(AvailabilityChangeEvent.java:81) ~[spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
  68. at org.springframework.boot.availability.AvailabilityChangeEvent.publish(AvailabilityChangeEvent.java:67) ~[spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
  69. at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:167) ~[spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
  70. at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:978) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  71. at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:814) ~[spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
  72. at org.springframework.boot.SpringApplication.run(SpringApplication.java:325) ~[spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
  73. at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) ~[spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
  74. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#39;org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration&#39;: Initialization of bean failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named &#39;org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry&#39; available
  75. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  76. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  77. at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  78. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  79. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  80. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  81. at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:409) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  82. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  83. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  84. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  85. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  86. at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  87. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  88. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  89. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  90. at org.springframework.aop.framework.autoproxy.BeanFactoryAdvisorRetrievalHelper.findAdvisorBeans(BeanFactoryAdvisorRetrievalHelper.java:91) ~[spring-aop-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  91. at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findCandidateAdvisors(AbstractAdvisorAutoProxyCreator.java:109) ~[spring-aop-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  92. ... 23 common frames omitted
  93. Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named &#39;org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry&#39; available
  94. at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:814) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  95. at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1282) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  96. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:297) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  97. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  98. at org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor.postProcessBeforeInitialization(ConfigurationClassPostProcessor.java:456) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  99. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:416) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  100. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1788) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  101. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]
  102. ... 45 common frames omitted

答案1

得分: 1

也许你应该再次查看Heroku教程。它指出你需要向应用程序添加一个配置bean!这意味着你至少需要一个带有 @Configuration 注解的类。教程中的配置bean如下所示:

  1. package com.example.demo;
  2. import com.zaxxer.hikari.*;
  3. import org.springframework.beans.factory.annotation.Value;
  4. import org.springframework.context.annotation.*;
  5. import javax.sql.DataSource;
  6. @Configuration
  7. public class DatabaseConfig {
  8. @Value("${spring.datasource.url}")
  9. private String dbUrl;
  10. @Bean
  11. public DataSource dataSource() {
  12. HikariConfig config = new HikariConfig();
  13. config.setJdbcUrl(dbUrl);
  14. return new HikariDataSource(config);
  15. }
  16. }
英文:

May be you should check the Heroku tutorial again. It says that you have to add a configuration bean to your app! It means that you need at least one class with @Configuration. The configuration bean at the tutorial is as follows:

  1. package com.example.demo;
  2. import com.zaxxer.hikari.*;
  3. import org.springframework.beans.factory.annotation.Value;
  4. import org.springframework.context.annotation.*;
  5. import javax.sql.DataSource;
  6. @Configuration
  7. public class DatabaseConfig {
  8. @Value(&quot;${spring.datasource.url}&quot;)
  9. private String dbUrl;
  10. @Bean
  11. public DataSource dataSource() {
  12. HikariConfig config = new HikariConfig();
  13. config.setJdbcUrl(dbUrl);
  14. return new HikariDataSource(config);
  15. }
  16. }

答案2

得分: 1

@Configuration注解的类被JavaConfig用作bean定义的来源。您需要创建配置类,并在其中提供方法dataSource()来创建bean。

  1. @Configuration
  2. public class DatabaseConfig {
  3. @Value("${spring.datasource.url}")
  4. private String dbUrl;
  5. @Bean
  6. public DataSource dataSource() throws SQLException {
  7. if (dbUrl == null || dbUrl.isEmpty()) {
  8. return new HikariDataSource();
  9. } else {
  10. HikariConfig config = new HikariConfig();
  11. config.setJdbcUrl(dbUrl);
  12. return new HikariDataSource(config);
  13. }
  14. }
  15. }

更多信息请参见链接

英文:

@Configuration annotated class is used by JavaConfig as a source of bean definitions. You need to create configuration class and provide method dataSource() inside that to create bean.

  1. @Configuration
  2. public class DatabaseConfig {
  3. @Value(&quot;${spring.datasource.url}&quot;)
  4. private String dbUrl;
  5. @Bean
  6. public DataSource dataSource() throws SQLException {
  7. if (dbUrl == null || dbUrl.isEmpty()) {
  8. return new HikariDataSource();
  9. } else {
  10. HikariConfig config = new HikariConfig();
  11. config.setJdbcUrl(dbUrl);
  12. return new HikariDataSource(config);
  13. }
  14. }
  15. }

For more information here is link

答案3

得分: 0

如果您正在按照Heroku入门指南操作,只需在Main.java文件中删除以下属性:

  1. @Value("${spring.datasource.url}")
  2. private String dbUrl;
  3. @Autowired
  4. private DataSource dataSource;

Spring已经自动创建了它们。

英文:

If you are following the Heroku Getting Started just delete in Main.java file this attributes:

  1. @Value(&quot;${spring.datasource.url}&quot;)
  2. private String dbUrl;
  3. @Autowired
  4. private DataSource dataSource;

Spring already creates theam.

huangapple
  • 本文由 发表于 2020年8月23日 20:16:35
  • 转载请务必保留本文链接:https://go.coder-hub.com/63546844.html
匿名

发表评论

匿名网友

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

确定