将我的项目升级到 Spring Boot 后2.6.0,我在启动过程中遇到以下异常:
org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'webSecurityConfig': Requested bean is currently in creation: Is there an unresolvable circular reference?
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.beforeSingletonCreation(DefaultSingletonBeanRegistry.java:355) ~[spring-beans-5.3.13.jar:5.3.13]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:227) ~[spring-beans-5.3.13.jar:5.3.13]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.13.jar:5.3.13]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.13.jar:5.3.13]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:410) ~[spring-beans-5.3.13.jar:5.3.13]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-5.3.13.jar:5.3.13]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) ~[spring-beans-5.3.13.jar:5.3.13]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.13.jar:5.3.13]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.13.jar:5.3.13]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.13.jar:5.3.13]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.13.jar:5.3.13]
Run Code Online (Sandbox Code Playgroud)
但是,我的配置似乎符合 Spring 文档(HttpSecurity setup、AuthenticationManagerBuilder setup和PasswordEncoder setup):
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void …Run Code Online (Sandbox Code Playgroud) 我有以下 Spring Data JPA 存储库:
public interface FooRepository extends PagingAndSortingRepository<Foo, Long> {}
Run Code Online (Sandbox Code Playgroud)
迁移到 Spring Boot 3 后,我开始收到大多数标准存储库方法的错误消息(例如fooRepository.findById(id),,,)fooRepository.save(foo)fooRepository.findAll()
我在Spring Boot 3.0迁移指南中找不到与此相关的任何内容
我的项目中有以下控制器端点:
@GetMapping(value = "/{id}")
public FooDto findOne(@PathVariable Long id) {
Foo model = fooService.findById(id)
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
return toDto(model);
}
Run Code Online (Sandbox Code Playgroud)
当我的应用程序找不到Foo具有提供的 id 的响应时,它检索到以下响应:
{
"timestamp": "2023-01-06T08:43:12.161+00:00",
"status": 404,
"error": "Not Found",
"path": "/foo/99"
}
Run Code Online (Sandbox Code Playgroud)
但是,升级到 Boot 3 后,响应正文更改为:
{
"type": "about:blank",
"title": "Not Found",
"status": 404,
"instance": "/foo/99"
}
Run Code Online (Sandbox Code Playgroud)
我在《Spring Boot 3.0 迁移指南》和《升级到 Spring Framework 6.x 》中都找不到任何相关信息。
我有一个配置了 Spring Boot 和 Spring Data JPA 的项目。
我的项目包含以下data.sql初始化脚本(我刚刚开始开发我的应用程序,这就是我使用嵌入式 H2 数据库的原因):
INSERT INTO Project(id, name) VALUES (1, 'Project 1');
Run Code Online (Sandbox Code Playgroud)
我正在定义以下实体:
@Entity
public class Project {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
protected Project() {
}
public Project(String name) {
this.name = name;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
我没有任何其他配置/设置。
ERROR 5520 ---[ restartedMain] o.s.boot.SpringApplication :Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Invocation of init method failed; nested …Run Code Online (Sandbox Code Playgroud) 升级到 Boot 2.7 后,使用嵌入式 H2 数据库的集成测试开始失败。
我在日志中看到此警告消息,但不清楚原因或解决方案:
WARN 8053 ---[ main] o.h.t.s.i.ExceptionHandlerLoggedImpl :GenerationTarget encountered exception accepting command : Error executing DDL "create table user (id bigint generated by default as identity, email varchar(255) not null, name varchar(255), primary key (id))" via JDBC Statement
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table user (id bigint generated by default as identity, email varchar(255) not null, name varchar(255), primary key (id))" via JDBC Statement
...
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "create table …Run Code Online (Sandbox Code Playgroud)