gpt4 book ai didi

java - 来自外部 JAR 的 SpringBoot Autowiring 异常

转载 作者:行者123 更新时间:2023-11-30 08:30:39 25 4
gpt4 key购买 nike

我有一个与另一个外部 JAR 一起工作的 SpringBoot 应用程序。当我尝试从 JAR 中使用 @Autowired 类时,SpringApp 无法加载。我得到了“org.springframework.beans.factory.NoSuchBeanDefinitionException”。我知道这与 SpringBoot 不搜索项目类的位置有关,但我不知道如何正确判断要查找的位置。我添加了@ComponentScan,它可以与其他内部类一起使用,但不能与这个外部 JAR 一起使用。

这是我使用 JAR 方法的类:

package ar.com.tr.latam.care.ws.service.impl;

@Configuration

@ComponentScan({
"ar.com.tr.arz.expurgo", "ar.com.tr.arz.expurgo.logger", "ar.com.tr.arz.expurgo.logger.dao", "ar.com.tr.arz.expurgo.logger.impl","ar.com.tr.arz.expurgo.logger.model"})

@Import({ AppConfig.class, AplicacionCriteriosExpurgoServiceImpl.class, ClasificacionServiceImpl.class, ExcelReaderServiceImpl.class, ConversionServiceImpl.class})

@Service
public class ArzServiceImpl implements ArzService {

@Autowired
private ExcelReaderService excelReaderService;

@Autowired
private ConversionService conversionService;

@Autowired
private AppConfig appConfig;

...
}

还有我的 Init.java 类:

package ar.com.tr.latam.care;
@Configuration
@ComponentScan({ "ar.com.tr.latam.care.controller",
"ar.com.tr.latam.care.filtro", "ar.com.tr.latam.care",
"ar.com.tr.latam.care.model.log", "ar.com.tr.latam.care.logger.impl", })

@EnableJpaRepositories
@SpringBootApplication

public class Init extends SpringBootServletInitializer {


@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Init.class);
}

/**
* Main method.
*
* @param args String[].
* @throws Exception Exception.
*/
public static void main(String[] args) throws Exception {
SpringApplication.run(Init.class, args);
}
}

JAR 结构以 "ar.com.tr.arz.expurgo"开头,但我找不到如何正确地告诉 Springboot 检查那里的那些文件。

错误是“Could not autowire field: private ar.com.tr.arz.expurgo.services.ClasificacionService”

我也试过在 @ComponentScan Init 类中添加外部 JAR 类,但也没有用。

有什么建议吗?

最佳答案

我能够解决它。首先,我从@Service 中删除@ComponentScan,并且只在我的Init.java 类中调用它(应用程序开始)然后我更改了我的 Init 包,以便位于 jar 类的上层:

我的 Init.java 在 ar.com.tr.latam.care 包下,外部 JAR 包类在:ar.com.tr.expurgo 包下。所以,我将我的 Init.java 更改为包 ar.com.tr 中,并且每一个都有效!

关于java - 来自外部 JAR 的 SpringBoot Autowiring 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41073724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com