首页 > 解决方案 > 注入来自依赖项但没有 @Bean 注释的 Spring bean

问题描述

我的Spring Boot应用有一个新Zoo @Service类:

@RequiredArgsConstructor
@Service
public class Zoo{
    private final Cat cat;

我需要在构造函数中注入一个Cat类,该类是从我通过 pom 导入到项目的遗留库中获得的:

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>animals</artifactId>
    </dependency>

package com.example.animals
class Cat{..}

我无法更改旧animals包的代码以向Cat类添加注释。

当我尝试运行应用程序时,出现此错误:

com.example.zoo 中构造函数的参数 0 需要找不到类型为“com.example.animals.cat”的 bean

有没有办法解决这个问题?

标签: springspring-bootdependency-injection

解决方案


是的,您可以通过创建一个@Configuration类来解决此问题,在该类中定义一个代表 Cat 实例的 Spring Bean,如下例所示。

@Configuration
public class AppConfiguration {

  @Bean
  public Cat cat() {
    return new Cat();
  }
}

推荐阅读