我正在尝试将配置Bean注入我的Service中。为此,我创建了一个单独的类EncryptionProps
public class EncryptionProps {
@Getter
@Setter
@Value("${kafka.properties.security.keyreuseinterval}")
private long keyReuseInterval;
}
然后,我正在创建另一个配置类以将其注册为bean
@Configuration
public class EncryptionConfig {
@Bean
public EncryptionProps encryptionProps() {
return new EncryptionProps();
}}
这就是我在服务类中调用的方式:
@Service
public class EncryptionService {
private final long keyReuseInterval;
//some more declarations
@Autowired
public EncryptionService(SchemaProcessor schemaProcessor, CryptoLib crypto, EncryptionProps encryptionProps) {
this.schemaProcessor = Preconditions.checkNotNull(schemaProcessor, "schemaProcessor cannot be null.");
this.crypto = Preconditions.checkNotNull(crypto, "CryptoLib must be provided");
this.keyReuseInterval = encryptionProps.getKeyReuseInterval();
}
但是,当我运行此代码时,出现以下错误-org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型为'com.example.sinkad.kafka.util.EncryptionProps'的合格bean:至少预期1个符合自动装配候选条件的bean。依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}
从昨天开始,我就一直坚持下去。我已经尝试过很多关于stackoverflow的问题,但是到目前为止,没有任何帮助。有人可以帮我为什么Spring没有找到这个bean。我什至尝试在EncryptionConfig类上添加@ComponentScan。但这也不起作用。或者,只要您能指向我一些与之相关的资源即可。
谢谢!
更新:
这是我的主要课程:
package com.example.sinkad;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}}
答案 0 :(得分:0)
尝试如下:
@Component
class EncryptionProps {
final String keyreuseinterval;
// Use @Autowired to get @Value to work.
@Autowired
EncryptionProps(
@Value("${kafka.properties.security.keyreuseinterval}") final String keyreuseinterval) {
this.keyreuseinterval = keyreuseinterval;
}
}