【发布时间】:2018-12-25 06:23:28
【问题描述】:
我已经发布了a similar question,但我需要用一个例子来详细说明以获得有用的答案。
我不确定如何使用 Spring Boot 定义一个特定的类实例,Spring 应该使用该实例将其注入到 @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) {
// ...
}
}
在应用程序启动期间,我希望能够使用在我的应用程序配置(或其他地方)中定义的算法和密钥创建SecurityUtil 的单例实例。我假设我可以添加一个类似于下面的类,但我不确定如何配置我的单例的注入。
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 完成此配置?
【问题讨论】:
标签: java spring spring-boot dependency-injection configuration