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

Autowire的Spring护套不工作。创建bean时出错

南门英飙
2023-03-14

嗨,我有一个spring boot项目。主类包如下所示:

com.som.demo

我在项目中使用了一个外部jar作为maven依赖项。在该jar中,有一个用@service注释的服务类,如下所示:

@Service
public class SomeServiceImpl implements SomeService {
      @Autowired
      private TreeCacheWrapper ffCoreCache;

      @Autowired(required = false)
      private ZookeeperProperties zookeeperProperties;

      public SomeServiceImpl(TreeCacheWrapper ffCoreCache, ZookeeperProperties zookeeperProperties) {
         this.ffCoreCache = ffCoreCache;
         this.zookeeperProperties = zookeeperProperties;
      }
}

其中SomeServiceImpl类的主包如下所示:

com.som.test

现在,在我的项目中,当我自动连接类时,我在运行spring boot应用程序时遇到了bean创建错误。我就是这样做的:

@Autowired
private SomeService someService;

错误:

 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'someServiceImpl'
Unsatisfied dependency expressed through field 'ffCoreCache'; 
nested exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'ffCoreCache' defined in class path resource [com/som/test/config/ZooKeeperConfig.class]: 
Bean instantiation via factory method failed; 
nested exception is org.springframework.beans.BeanInstantiationException: 
Failed to instantiate [com.som.test.cache.TreeCacheWrapper]: 
Factory method 'ffCoreCache' threw exception; 
nested exception is java.lang.NoClassDefFoundError: org/apache/curator/retry/ExponentialBackoffRetry


Caused by: org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'ffCoreCache' defined in class path resource [com/som/test/config/ZooKeeperConfig.class]: 
Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: 
Failed to instantiate [com.som.test.cache.TreeCacheWrapper]: 
Factory method 'ffCoreCache' threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/curator/retry/ExponentialBackoffRetry



Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.som.test.cache.TreeCacheWrapper]: 
Factory method 'ffCoreCache' threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/curator/retry/ExponentialBackoffRetry

Caused by: java.lang.NoClassDefFoundError: org/apache/curator/retry/ExponentialBackoffRetry

Caused by: java.lang.ClassNotFoundException: org.apache.curator.retry.ExponentialBackoffRetry

共有3个答案

元英朗
2023-03-14

Spring Boot默认扫描到主包中的bean。您可以使用

@SpringBootApplication(scanBasePackages={"com.som.demo" , "com.som.test"})
隆璞
2023-03-14

用@服务而不是实现类注释服务接口,并尝试用@组件注释ServiceImplementation类。

邵展
2023-03-14

当Spring Boot应用程序启动时,它会扫描与您的主类相同的包中的bean,以及它下面的所有包。

因为您的主类驻留在包com中。som。演示spring boot将在此包中或类似com的包中找到任何bean。som。演示。示例1,com。som。演示。a、 b.c等,但不会扫描com。som。测试包,因为它是主包的“对等”包。

通常,您可以在接受要扫描的基本包列表的ComponentScan注释的帮助下,配置spring boot来扫描您选择的包。您可以将此注释放在主类上(位于SpringBootApplication旁边)。

然而,这有点违背了Spring靴的惯例。

有关更多技术细节和示例,请阅读本教程。

 类似资料:
  • 我使用的是Spring 3.1.4 服务实现 DAO实现 web.xml

  • 问题内容: 我有一个已创建的模块/ jar,正在用作util 库。我在那里创建了一个服务,如下所示: …它位于以下包中的位置:com.inin.architect.permissions和我的主应用程序中,我正在引用/加载此jar(即,设置为该应用程序的Maven POM.xml文件中的依赖项),例如所以: 在应用程序中,我想使用该服务,例如: 在应用程序的spring设置中,我得到了以下信息:

  • 我是春靴新来的。我试图用hibernate连接MySql db,但当我命令 mvn Spring-Boot:Run 我的pom.xml在这里: hibernate.dialog:org.hibernate.dialt.mysql5dialog hibernate.show_sql:true hibernate.hbm2ddl.auto:update entitymanager.packageSto

  • 我正在尝试学习这篇spring-lemon入门教程(https://naturalprogrammer.gitbooks.io/spring-lemon-gett-started/content/index.html),但在某一点上我无法更进一步。我创建了一个新的spring starter项目(spring boot),并且能够将spring lemon添加到其中。我只做了说明,但是当我启动ma

  • 我试图使用EntityManager类访问我的数据库,但当我试图将项目部署到Tomcat时出错。 这是我的刀: 我的应用程序上下文。xml文件: 我的pom.xml文件: 还有我的错误:

  • 尝试在这里使用Mapstruct做一些测试。我有以下类: 试验等级 测绘仪 在这里考虑模型 生成的通用MapperImpl: 当我尝试运行测试时,他给出了以下错误: MapperTest中的@Autowire不起作用。它声称:“无法自动连线。找不到“UsuarioMapper”类型的beans。 已尝试: gradle build(无错误) gradle build-x test(无错误) 使缓存