我已发布a similar question ,但我需要用一个例子来详细说明以获得有用的答案。
我不确定,使用 Spring Boot,如何定义 Spring 应该使用的类的特定实例来注入(inject) @Autowire
d 依赖字段/构造函数。
假设我有一个位于库中的实用程序类,我 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/