不能为Spring Boot创建自动配置库



我正在尝试做一些似乎很简单的事情。但我怎么也不能让它工作。我一定错过了什么。

我有两个Spring Boot(3.0.5)项目:

  • 一个库叫做spring-lib
  • 另一个是使用lib的web应用程序。

在我的lib中,我在包com.example.springlib.configuration中有这个配置类:

@Configuration
@ConfigurationProperties(prefix = "com.example.hello")
public class HelloConfiguration {
private String text;
@Bean
public HelloService helloService() {
return new HelloService(text);
}
}

我在com.example.springlib.service中有这个服务:

@RequiredArgsConstructor
public class HelloService {
private final String hello;
public String hello(String name) {
return String.format(hello, name);
}
}

META-INF/spring.factories文件中,我有这个:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.springlib.configuration.HelloConfiguration

现在在我的web应用程序中,我有这个控制器在com.example.springweb.web:

@RestController
@RequiredArgsConstructor
public class HelloController {
private final HelloService helloService;
@GetMapping("/hello/{name}")
public HelloResponse convert(@PathVariable String name) {
var response = new HelloResponse();
response.setMessage(helloService.hello(name));
return response;
}
}

这个application.yml文件:

com:
example:
hello:
text: Hello %s!

所以这里没有什么太复杂的。我正等着服务返回"你好,鲍勃!"如果我调用/hello/Bob

但是我无法启动web应用程序。由于某种原因,无法找到HelloService。我得到这个错误信息:

Description:
Parameter 0 of constructor in com.example.springweb.web.HelloController required a bean of type 'com.example.springlib.service.HelloService' that could not be found.

我错过了什么?我做错了什么?

在Spring Boot 3中,META-INF/spring.factories不再支持注册自动配置。

你需要在META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中注册你的自动配置类

这个文件应该列出你的配置类,每行一个类名。例如:

com.example.springlib.configuration.HelloConfiguration
com.example.springlib.configuration.SomeOtherConfiguration

顺便说一下,从Spring Boot 2.7开始,建议使用@AutoConfiguration而不是@Configuration,特别是当你想以期望的顺序应用多个自动配置时。

您可以在官方文档中阅读更多相关内容:创建您自己的自动配置

你可以直接删除

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.springlib.configuration.HelloConfiguration

如果仍然不行就添加

@EnableAutoConfiguration

在你的主类

之上

相关内容

  • 没有找到相关文章

最新更新