Field ... in ... 无法找到 'service' 类型的 bean
Field ... in ... a bean of type 'service' that could not be found
我正在尝试使用外部库中的对象,但是当我使用@Autowired 属性 时,应用程序找不到它。
主应用有如下注解:
@SpringBootApplication
@ComponentScan(basePackages = {"com.XXXX.prj.business.modules"})
@EntityScan("com.XXXX.prj")
@EnableJpaRepositories(basePackages = {"com.XXXX.prj.business.modules.repositories"})
在com.XXXX.prj.business.modules中我有一个class调用依赖的对象,叫做MailService,这样:
@Component
public class MailNotificatorImpl implements Notificator {
@Autowired
private MailService mailService;
问题来了,找不到这个 mailService 对象作为 bean 类型。 MailService 在一个名为 YYYY-commons 的外部库中。库的class有接口和实现,实现有这个注解:
@Service("mailService")
public class MailServiceImpl extends GenericService implements MailService, Serializable {
我不知道我做错了什么,因为在其他应用程序中我以相同的方式使用并且它正在工作。
你能帮我一些忙吗?非常感谢!
在您的组件扫描中,您只扫描定义的包,以及那里的任何 sub-package。这意味着第三方库未被组件扫描捕获,因此未注册 bean。
您的选择是:
- 在您的主应用程序上使用
@ComponentScan
注释 class 并添加您自己的基础包和第三方库的包。
@ComponentScan(basePackages = {"my.base.package", "third.party.package"})
public class MySpringBootApplication{}
- 通过添加类似下面的内容来自己注册 bean,例如您的主要应用程序 class:
@Bean
public MailService mailServiceBean() {
return new MailServiceImple();
}
我正在尝试使用外部库中的对象,但是当我使用@Autowired 属性 时,应用程序找不到它。
主应用有如下注解:
@SpringBootApplication
@ComponentScan(basePackages = {"com.XXXX.prj.business.modules"})
@EntityScan("com.XXXX.prj")
@EnableJpaRepositories(basePackages = {"com.XXXX.prj.business.modules.repositories"})
在com.XXXX.prj.business.modules中我有一个class调用依赖的对象,叫做MailService,这样:
@Component
public class MailNotificatorImpl implements Notificator {
@Autowired
private MailService mailService;
问题来了,找不到这个 mailService 对象作为 bean 类型。 MailService 在一个名为 YYYY-commons 的外部库中。库的class有接口和实现,实现有这个注解:
@Service("mailService")
public class MailServiceImpl extends GenericService implements MailService, Serializable {
我不知道我做错了什么,因为在其他应用程序中我以相同的方式使用并且它正在工作。
你能帮我一些忙吗?非常感谢!
在您的组件扫描中,您只扫描定义的包,以及那里的任何 sub-package。这意味着第三方库未被组件扫描捕获,因此未注册 bean。
您的选择是:
- 在您的主应用程序上使用
@ComponentScan
注释 class 并添加您自己的基础包和第三方库的包。
@ComponentScan(basePackages = {"my.base.package", "third.party.package"})
public class MySpringBootApplication{}
- 通过添加类似下面的内容来自己注册 bean,例如您的主要应用程序 class:
@Bean
public MailService mailServiceBean() {
return new MailServiceImple();
}