java - 使用 "code"配置自动连接服务注入(inject)

标签 java spring spring-boot dependency-injection configuration

我已发布a similar question ,但我需要用一个例子来详细说明以获得有用的答案。

我不确定,使用 Spring Boot,如何定义 Spring 应该使用的类的特定实例来注入(inject) @Autowired 依赖字段/构造函数。

假设我有一个位于库中的实用程序类,我 a) 无权更改它,或者 b) 不想添加对 Spring Boot 的依赖项。

SecurityUtil - 接受两个字符串参数,这些参数可能来自某些应用程序级配置(在外部包中定义)。

public class SecurityUtil {
    private final String algorithm;
    private final String key;

    public SecurityUtil(String algorithm, String key) {
        // ...
    }
}

PasswordHelper - 使用 SecurityUtil 签署密码(例如)。

public class PasswordHelper {
    private final SecurityUtil securityUtil;

    @Autowired
    public PasswordHelper(SecurityUtil securityUtil) {
        // ...
    }
}

在应用程序启动期间,我希望能够使用应用程序配置(或其他地方)中定义的算法和 key 创建 SecurityUtil 的单例实例。我假设我能够添加一个类似于下面的类,但我不确定如何配置我的单例的注入(inject)。

DIConfig -- 配置 DI 的内容(例如

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

@Configuration
public class DIConfig
{
    @Value("${security-util.key}")
    private String securityUtilKey;

    @Value("${security-util.algorithm}")
    private String securityUtilAlgorithm;

    public void configure(SpringDiMagicalConfig config)
    {
        // register a singleton SecurityUtil instance
        config.register(new SecurityUtil(securityUtilKey, securityUtilAlgorithm));
    }
}

如何使用 Java/Spring Boot 完成此配置?

最佳答案

configure 方法替换为:

@Bean
public SecurityUtil securityUtil()
{
    return new SecurityUtil(securityUtilKey, securityUtilAlgorithm);
}

关于java - 使用 "code"配置自动连接服务注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51383255/

相关文章:

java - Spring Boot HIbernate 问题 : Error executing DDL via JDBC Statement with ddl-auto=create-drop

java - 当 Json 在 Play Framework 中太大时,Json 为 null

java - 如何使用 Java 加载图像并向其中写入文本?

java - 在 Activity 之间传输 int 无法正常工作

java - 从 Memcache 中获取低级数据存储实体对象时反序列化缓慢

java - 将属性文件加载到 java.util.Properties?

java - 不区分大小写的查询字符串请求参数

AngularJS 和 Spring boot Web 应用程序作为独立的桌面应用程序

Java Spring 如果出错则切换服务

Java 验证输入值