我创建了一个类,并用 @Component 进行了注释,并且该类在正确的软件包下,它将进行组件扫描。但是,如果我尝试自动连线,则无法注入。这是我的配置。
@Component
@ConfigurationProperties(prefix = "request-default-values")
public class DefaultConfig {
//Getters and setters
}
我在哪里上课
@Component
public class ProcessRequest {
@Autowired
DefaultConfig defaultConfig;
@Autowired
SalesForceService salesForceService;
public String getUpdateRequest(String req) {
// defaultConfig is coming as null
}
}
上面的类在根包com.bb.app下
我的spring主要应用程序
@SpringBootApplication(scanBasePackages = {"com.bb.app"})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
我还有什么想念的吗?
答案 0 :(得分:2)
@Component public class ProcessRequest {}
spring如何知道如何使用自动装配的bean创建ProcessRequest?您可以通过指定它也是spring托管bean来要求它。您忘了给班级添加注释。
答案 1 :(得分:0)
每个您要注入bean的Java类也必须是Spring托管的bean,即使未在其他任何地方显式使用它。
根据项目的大小,我还是建议您使用显式配置。例如,这将起作用:
@Configuration
public class ApplicationConfiguration {
@Bean
public ProcessRequest processRequest() {
return new ProcessRequest();
}
@Bean
public DefaultConfig defaultConfig() {
return new DefaultConfig();
}
}
然后,在您的主方法类上,
@SpringBootApplication(scanBasePackageClasses = ApplicationConfiguration.class)
public class Application { ... }
或者,仅使用@Component
此外,如果此配置类只不过是属性,则应查看@ConfigurationProperties