我有多個由 Gradle 管理的 Spring Boot 微服務應用程序。有一個通用的 jar 和特定于域的 jar,組織如下:| common/
|-- common.jar
| p/
|-- p-ingest.jar
| g/
|-- g-ingest.jar我的常見 jar 有一個類,BaseRESTService自動裝配HttpServletRequest(我已經知道這是一個壞主意 - 不是我的代碼)。p-ingest.jar 導入 common,g-ingest jar 也是如此。geoalloc 運行沒有問題。但是 p-ingest(實際上是從 g-ingest 復制而來)不會運行。當上下文嘗試初始化時,p-ingest 出現以下異常:Field request in com.company.common.BaseRESTService required a bean of type 'javax.servlet.http.HttpServletRequest' that could not be found.我對 Spring 并不陌生,我了解組件掃描和自動裝配等所有內容,但我已經為此工作了 2 天,但我無法弄清楚發生了什么。我運行gradle dependencies了這兩個項目,樹是相同的。下面是p-ingest的啟動應用類:@SpringBootApplication@ComponentScan( basePackageClasses = com.company.common.ConfigurationSearchCriteriaFactory.class, basePackages = {"com.company.erd"})@EnableJpaRepositories(basePackages = "com.company.erd")@EntityScan(basePackages = {"com.company.erd"})public class PortfolioRiskIngestApplication implements ApplicationRunner { private static final Log logger = LogFactory.getLog(IngestApplication.class); @Autowired private IngestService ingestService; public PIngestApplication(PIngestService ingestService) {this.ingestService = ingestService;} public static void main(String[] args) { SpringProfileHelper.setProfileFromAwsEnvironment(); SpringApplication app = new SpringApplication(PIngestApplication.class); app.setWebEnvironment(false); app.run(args); } @PostConstruct void started() { TimeZone.setDefault(TimeZone.getTimeZone("UTC")); } @Override public void run(ApplicationArguments applicationArguments) { // define the log info LogInfo info = LogInfo.newInstance("run", new Object[] { StringUtility.arrayToString(applicationArguments.getSourceArgs()) }); // log entry logger.info(info.entry()); ingestService.run(applicationArguments.getSourceArgs()); // log exit logger.info(info.exit()); }}
添加回答
舉報
0/150
提交
取消