Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用“配置自动有线服务注入”;代码“;_Java_Spring_Spring Boot_Dependency Injection_Configuration - Fatal编程技术网

Java 使用“配置自动有线服务注入”;代码“;

Java 使用“配置自动有线服务注入”;代码“;,java,spring,spring-boot,dependency-injection,configuration,Java,Spring,Spring Boot,Dependency Injection,Configuration,我已经发布了,但是我需要用一个例子来详细说明,以得到一个有用的答案 我不确定如何使用Spring Boot定义一个类的特定实例,Spring应该使用该实例将其注入到@Autowired依赖字段/构造函数中 假设我有一个实用程序类,它在一个库中,我要么a)没有更改的权限,要么b)不想添加对Spring Boot的依赖 SecurityUtil——接受两个字符串参数,它们可能来自某个应用程序级配置(在外部包中定义) PasswordHelper——使用SecurityUtil对密码进行签名(例如)

我已经发布了,但是我需要用一个例子来详细说明,以得到一个有用的答案

我不确定如何使用Spring Boot定义一个类的特定实例,Spring应该使用该实例将其注入到
@Autowire
d依赖字段/构造函数中

假设我有一个实用程序类,它在一个库中,我要么a)没有更改的权限,要么b)不想添加对Spring Boot的依赖

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

PasswordHelper——使用
SecurityUtil
对密码进行签名(例如)

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

DIConfig——为DI配置内容(例如:


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

configure
方法替换为:

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

configure
方法替换为:

@Bean
public SecurityUtil securityUtil()
{
    return new SecurityUtil(securityUtilKey, securityUtilAlgorithm);
}
你可以走这条路:

@Component
public class DiConfig {

    @Bean
    public SecurityUtil securityUtil(
            @Value("${security-util.key}") String securityUtilKey,
            @Value("${security-util.algorithm}") String securityUtilAlgorithm) {
        return new SecurityUtil(securityUtilKey, securityUtilAlgorithm);
    }
}
你可以走这条路:

@Component
public class DiConfig {

    @Bean
    public SecurityUtil securityUtil(
            @Value("${security-util.key}") String securityUtilKey,
            @Value("${security-util.algorithm}") String securityUtilAlgorithm) {
        return new SecurityUtil(securityUtilKey, securityUtilAlgorithm);
    }
}

谢谢。应用更改后,应用程序将不会启动,并出现以下错误。我认为这是配置顺序的问题:“LifecycleProcessor未初始化-在通过上下文调用生命周期方法之前调用'refresh':org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext”@JoshM。你能用你的更改和完整堆栈跟踪更新你的问题吗?我错了,我已经注入了(
@Value
)变量混淆——将默认值应用于错误的变量,而将另一个变量排除在配置之外。因此,真正的例外是没有为其中一个变量找到配置项。谢谢。应用该更改后,应用程序将不会启动,并出现以下错误。我认为这是配置顺序的问题ured:“LifecycleProcessor未初始化-在通过以下上下文调用生命周期方法之前调用‘刷新’:org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext”@JoshM。你能用你的更改和完整的堆栈跟踪更新你的问题吗?我错了,我已经注入了(
@Value
)变量混淆——将默认值应用于错误的变量,而将另一个变量排除在配置之外。因此,真正的例外是没有为其中一个变量找到配置项。
@Component
public class DiConfig {

    @Bean
    public SecurityUtil securityUtil(
            @Value("${security-util.key}") String securityUtilKey,
            @Value("${security-util.algorithm}") String securityUtilAlgorithm) {
        return new SecurityUtil(securityUtilKey, securityUtilAlgorithm);
    }
}