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

Spring启动组件扫描

吴高畅
2023-03-14

我正在编写一个新的SpringBoot项目,其中我的根包名是“com.example”。在我的gradle配置中,我添加了一个第三方库的依赖项,它的根包名为“org.base”。现在,这个库中有带有@Component注释的类,我想在代码中使用@Autowired

在我的配置类中,我也扫描第三方库的基本包。

@Configuration
@ComponentScan({"org.base", "com.example"})
public class ServiceConfig{...}

当我运行应用程序时,spring无法从这个库中找到/创建bean,我得到了一个bean not found错误。

要使组件扫描工作,根包必须相同吗?

错误详细信息:UserService需要找不到类型为“org.base.util.CommonUtils”的bean。

用户服务是我的服务

共有2个答案

萧越泽
2023-03-14

问题在于没有适当的注释。我最终修复了这个问题,如下所示

@Component
public Class UserService {
    @Autowired
    @Lazy
    private CommonUtils commonUtils;
}

我不得不对来自第三方库的依赖项使用@Lazy注释。在初始化过程中,spring无法找到依赖项bean。

阎建德
2023-03-14

@ComponentScan仅在使用spring注释(如@Component@Service等)对类进行注释时才起作用。解决此问题的方法是使用声明性方法,对使用@Configuration注释的类使用@Bean将解决此问题。

 类似资料:
  • 我对spring boot相当陌生,正在尝试使用Java持久性API hibernate mySQL持久性层构建spring boot应用程序。但当我试图使用entityManager获取所有记录时。createNamedQuery(“从学生s中选择*”,学生.class)。getResultList()它给了我以下异常。 Java语言lang.IllegalArgumentException:未

  • 我有一个eclipse java项目,在/src/main/java(包com.xxx.yyy)下。我还在/src/Test/java(包com.xxx.yyy)下有几个测试类。测试类(注释为@Service(value=“sampleclient”)公共类sampleclient{…}由位于/src/main/java下的一个包中的框架代码调用。 如果所有文件/包都位于/src/main/jav

  • 我找不到关于beans xml配置的文档,所以我在这里问:在 在概念上与Java中的包相同吗? 例如,在我的src/main/java(Eclipse中的项目资源管理器视图,平面包演示)中,假设我有4个包com.amazon、com.amazon.entities、com.amazon.services、com.amazon.repositories.在Navigator视图中,我只有“amazo

  • 您可以通过Burp 控制台(Burp Dashboard)上的新的扫描(New scan)按钮或是 Burp 中出现的菜单中的Scan选项来启动扫描。利用这些方法可打开扫描启动窗口,然后您可以使用它配置扫描中的各种详细参数。 扫描细节 扫描启动界面的详细的扫描信息(Scan details)部分允许您选择扫描类型,配置要扫描的内容等等信息。 扫描类型 您可以选择以下扫描类型: 抓取并审计(Craw

  • 我需要为类构建映射(字面上是

  • 我正在使用Spring Boot和Jersey开发一个小应用程序,我需要添加@ComponentScan来扫描第三方库中的一些服务。问题是,每当我添加@ComponentScan注释时,似乎Spring MVC DispatcherServlet就接管了它,我再也不能访问我的Jerseyendpoint(我添加注释时,Jersey Servlet看起来甚至都没有加载)。如何让组件扫描与我的Jers