如何在 SpringBoot 应用程序中自动装配具有带参数的构造函数的组件

Rad*_*dhi 6 java constructor arguments autowired spring-boot

我有一个具有 Autowired Constructor 的类。

现在当我在我的班级中自动装配这个类对象时。我如何为构造函数传递参数?

示例代码: 具有自动装配构造函数的类:

@Component
public class Transformer {
    private String dataSource;
    @Autowired
    public Transformer(String dataSource)
    {
        this.dataSource = dataSource;
    }
}
Run Code Online (Sandbox Code Playgroud)

对具有带参数的构造函数的组件使用自动装配的类:

@Component
    public class TransformerUser {
        private String dataSource;
        @Autowired
        public TransformerUser(String dataSource)
        {
            this.dataSource = dataSource;
        }
        @Autowired
        Transformer transformer;

    }
Run Code Online (Sandbox Code Playgroud)

此代码失败并显示消息

“通过构造函数参数 0 表示不满足的依赖关系”

在创建类型为 Transformer 的 bean 时。

我如何在 Autorwiring 时将参数传递给 Transformer?

小智 7

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class Transformer {
    private String datasource;

    @Autowired
    public Transformer(String datasource) {
        this.datasource=datasource;
        log.info(datasource);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后创建一个配置文件

package com.example.demo;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class BeanConfig {
    @Bean
    public Transformer getTransformerBean() {
        return new Transformer("hello spring");
    }

    @Bean
    public String getStringBean() {
        return new String();
    }
}
Run Code Online (Sandbox Code Playgroud)