Java NoSuchBeanDefinitionException:没有可用类型的符合条件的bean:至少需要1个符合autowire候选条件的bean
我正在尝试将Spring4.x.x迁移到SpringBoot,它依赖于外部Spring2.5JAR中的一个类。我已经做了所有的自动布线更改,下面是我的应用程序类Java NoSuchBeanDefinitionException:没有可用类型的符合条件的bean:至少需要1个符合autowire候选条件的bean,java,spring,spring-boot,autowired,external-dependencies,Java,Spring,Spring Boot,Autowired,External Dependencies,我正在尝试将Spring4.x.x迁移到SpringBoot,它依赖于外部Spring2.5JAR中的一个类。我已经做了所有的自动布线更改,下面是我的应用程序类 @SpringBootApplication @EnableAutoConfiguration @ComponentScan(basePackages = { "com.xyz" }) public class MainApiApplication { public static void main(String[] args
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan(basePackages = { "com.xyz" })
public class MainApiApplication {
public static void main(String[] args) {
SpringApplication.run(MainApiApplication.class, args);
}
}
外部jar中的依赖类位于com.xyz.abc包下,因此我将我的主应用程序类放在com.xyz包下,并在同一个包下添加了组件扫描
下面是我的具有自动连线依赖项的组件类
@Component
public class ComponentClassA {
@Autowired
private ComponentClassB currencyService;
}
@Component
public class ComponentClassB {
@Autowired
private DependentClass depClass;
}
DependentClass是我在本地附加和构建的外部依赖jar中的类
在构建应用程序时,所有文件的编译都很好,并且成功生成了构建。但是当我启动应用程序时,我得到以下错误
Field DependentClass in com.xyz.ComponentClassB required a bean of type 'com.xyz.common.util.DependentClass' that could not be found.
我不理解为什么找不到外部jar中的类,因为我已经为包添加了组件扫描
DependentClass的定义如下所示
public class DependentClass extends ResourceClass<Map<String, Double>> {
// Methods and logic
}
公共类DependentClass扩展了ResourceClass{
//方法与逻辑
}
是因为DependentClass正在扩展一个类吗?有人能帮我找出错误的原因吗?依赖类
上没有@组件
注释。因此,您需要通过XML或Java配置自己创建一个DependentClass
bean
而且不必将主类放在与当前Spring上下文中未定义的DependentClass
相同的包下。DependentClass未使用bean(@bean)进行注释。因此不会发生任何SochBeanDefinitionException
@Bean
public class DependentClass extends ResourceClass<Map<String, Double>> {
// Methods and logic
}
@Bean
公共类DependentClass扩展了ResourceClass{
//方法与逻辑
}
根据以下内容定义您的课程:-
@Component("depClass")
public class DependentClass extends ResourceClass<Map<String, Double>> {
// Methods and logic
}
如果该类在外部类中定义,则使用@Bean注释,如:-
@Bean
public DependentClass depClass(){
return new DependentClass();
}
在自动连接类之后,您最终获得了实例。您的DependentClass
是否作为Bean存在于Spring上下文中(xml或@Bean
注释)?不,它不存在。它只是jarIt的一部分,应该是一个bean,然后只有自动布线才能工作。最好在您的@Configuration文件中创建一个bean,然后进行自动连接。如果您不/不能修改.jar文件中的类,我建议使用xml配置Use@Bean public DependentClass depClass(){return new DependentClass();}通过从jar中定义已经存在的类,我将复制它知道!这是唯一的方法吗?根据我的观点,这是我使用的唯一方法,可能还有更多的东西需要定义类。如果我找到另一种方法,我也会与您分享。@Bean
不允许在类或接口上进行注释;粘贴的代码将无法编译
@Bean
public DependentClass depClass(){
return new DependentClass();
}