春季:如何将Supplier <string>函数作为构造函数参数注入

时间:2018-11-05 14:25:41

标签: spring spring-boot

我已经编码了此类:

@Component
public class AuditFactory {

    private Supplier<String> auditIdSupplier;

    public AuditFactory(Supplier<String> auditIdSupplier) {
        this.auditIdSupplier = auditIdSupplier;
    }
}

它用作@Service类的依赖项:

@Service
public class AuditService {

    private AuditFactory auditFactory;

    public AuditService(AuditFactory auditFactory) {

        this.auditFactory = auditFactory;
    }
}

我如何告诉Spring在注入Supplier<String>时注入了AuditFactory

编辑

@Bean
public Supplier<String> auditIdSupplier(FrontOfficeProperties frontOfficeProperties) {
    return () -> String.join(
        "-",
        frontOfficeProperties.getCpdId(),
        frontOfficeProperties.getRedisAuditKeyPrefix(),
        UUID.randomUUID().toString()
    );
}

其中FrontOfficeProperties是带有注释的@ConfigurationProperties类。

1 个答案:

答案 0 :(得分:1)

以下方法可能有助于您解决问题。 也请您分享供应商的课程。

@Component
public class AuditFactory {

    private Supplier<String> auditIdSupplier;

    public AuditFactory(Supplier<String> auditIdSupplier) {
        this.auditIdSupplier = auditIdSupplier;
    }
}



@Service
public class AuditService {

    private AuditFactory auditFactory;

    public AuditService(AuditFactory auditFactory) {
        this.auditFactory = auditFactory;
    }
}