当前位置: 首页 > 知识库问答 >
问题:

自动连接和注入bean的外部Java库问题

桂德义
2023-03-14

我创建了一个由Maven管理的Spring Boot应用程序。我正在从我们的Maven仓库检索一个公司的图书馆。

在这个库中,我们有一个服务接口,没有用'@service'注释:

public interface MyService {
   //...
}

此服务只有一个实现:

public class DefaultMyService implements MyService {
   //...
}

这个库上下文是以旧的Spring方式(在applicationContext.xml文件中)管理的。我了解到,通常情况下,如果范围内只有一个实现,Spring Boot能够找到实现。

“我将在以下情况下运行spring”错误:

没有“com”类型的合格bean。药剂师。山姆。SAMLService'可用:至少需要1个符合autowire候选资格的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

我试过:

  1. 要在配置类上添加@ComponentScan,包括出错的包:@ComponentScan(basePackages={“com.mycompany.web”、“com.mycompany.thelibrary.client.*”、“com.mycompany.thelibrary.services.*”)

在所有情况下,我只能maven构建,但不能运行项目。你有什么建议可以帮助我吗?谢谢

共有1个答案

慕容晔
2023-03-14
  1. 将不工作,因为DefaultMyService没有@Component(或@Service)注释将不会被检测到。
  2. Bean定义必须是一个具体的实例,所以使用DefaultMyService代替接口。Spring不会为你探测到任何东西你的理解是错误的
  3. 和4.不会改变任何东西,只添加没有正确1.或2.的依赖项不会做任何事情。

只需在配置中添加一个@Bean

@Bean
public DefaultMyService myService() {
    return new DefaultMyService();
}

或者导入其他库应用程序ontext.xml,这可能是您应该做的。

@ImportResource("classpath:/applicationContext.xml")

将此添加到@SpringBootApplication旁边。

 类似资料:
  • 基本上,我的项目是一场战争(MyProject),导入2罐,MyProject-Client和MyProjectJar-API 我的项目 MyProjectJar-API - 有一个接口 MyProject-Client -想要注入在MyProject上生成的ParametroService 我想知道是否可以将ParameterService(在MyProject上生成)注入MyProject客户

  • 在Spring中,我们有基于注释和基于XML的配置。虽然第一种配置被推荐用于快速开发,但第二种配置更加灵活,能够处理特殊情况。我们目前有两种配置:为JUnit测试注入模拟和从外部库配置bean。 我还没有为CDI的XML配置找到任何等价物,所以我的问题是,如何处理这种bean的依赖注入?它们来自外部库,需要进行配置,不可能向它们添加任何注释。

  • 我是Spring的新手。我正面临Spring-Boot的问题。我正在尝试将外部配置文件中的字段自动装配到自动装配的bean中。我有以下类 应用程序。Java语言 AppConfig。Java语言 服务接口 服务1 我无法在App类的postconstruct方法中显示服务名称变量。我这样做对吗?

  • 我创建了自己的库(com.custom.mylib),它返回一个字符串,如下所示。 我创建了一个将使用上述库的项目。我已将lib作为pom依赖项包含在内。但是当我尝试从我的应用程序调用库方法时。我得到了下面的错误。如何解决它? 请考虑在您的配置中定义一个“com.custom.mylog.MyLibrary”类型的bean。 我在application.properties文件中也有下面的内容,这

  • 我正在使用Swing和Spring创建一个金融应用程序。在应用程序的一部分中,我有一个,其中包含应用程序中每个的。单击时,我希望在中显示类型的。这都是在下面的控制器中执行的。 会为每个点击更改,因此我将设置为一个原型bean,因此我将为每个帐户接收一个新实例。为了使原型作用域工作,我需要使用。以下是代码: 您将注意到我试图自动连接类型的bean。但是,该bean没有正确地自动连接,它是空的。以下是

  • 这是我的当前设置:ProjectRepo: ProjectService: ProjectRestController: