Spring Boot 构造函数的参数0需要类型为“java.lang.String”的Bean,但找不到该Bean

3gtaxfhh  于 2023-08-04  发布在  Spring
关注(0)|答案(1)|浏览(146)

我的springboot应用程序无法启动,出现以下错误:
未找到com.mydump.digital.aws.ParameterStore中构造函数的参数0需要类型为“java.lang.String”的Bean。
我可以看到在我的application.yml文件中配置的值“ssm.preset-path”和“amazon.aws.region”。请帮助这里出了什么问题?
springboot 3.1.1 gradle 8.1.1

@Component
@AllArgsConstructor
@Slf4j
public class ParameterStore {

    @Value("${ssm.preset-path}")
    private String presetPath;

    @Value("${amazon.aws.region}")
    private String region;

    @Autowired
    private SsmClient ssmClient;

    private static List<Parameter> parameterList;

    public ParameterStore() {
    }

    public List<String> getParameterConfiguration(final String preset) {
       /*
       some code
       */
    }

    //read aws ssm parameters store and get all parameters by path
    public void populatePresetParameters() {
        parameterList = ssmClient.getParametersByPath(request -> request.path(presetPath)).parameters();
    }

}

字符串

xxls0lw8

xxls0lw81#

由于添加了AllArgsConstructor,因此它将包括构造函数中的所有成员字段,包括@Value字段。将AllArgsConstructor更改为RequiredArgsConstructor。在这种情况下,Lombok将生成一个基于“必需的”final字段作为参数的构造函数。
如果要使用构造函数注入,请替换此内容:

@Autowired
    private SsmClient ssmClient;

字符串

private final SsmClient ssmClient;


最后,确保属性ssm.preset-pathamazon.aws.region定义为application.properties。

相关问题