Я пытался искать в Интернете и специально переполнять стек, но я не нашел решения. Извиняюсь, если я спрашиваю это снова.
У меня есть приложение весенней загрузки, которое подключается к двум базам данных и выполняет некоторую обработку записей, читая из одной базы данных и записывая в другую базу данных. Действие запускается пользователем через веб-интерфейс. Он работает нормально, когда я запускаю его через eclipse run как приложение с загрузкой весной. Это даже работает, когда я запускаю из командной строки, используя
mvn clean spring-boot:run
Но почему-то происходит сбой приложения при запуске, когда я запускаю его через
java -jar target\myproject.war
Упаковка - это война в pom-файле.
Точное сообщение об ошибке при использовании java -jar
Field targetRepo in <basepacakge>.repo.DbDao required a bean of type '<basepacakge>.repo.target.TargetRepo' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type '<basepacakge>.repo.target.TargetRepo' in your configuration.
Для предоставления моего пакета и структуры репозитория
Базовое приложение находится в basepacakge. Исходное хранилище - basepacakge.repo.sr c .SrcRepo, а целевое хранилище - basepacakge.repo.targetRepo.
Пытался сравнить журнал обоих запусков из eclipse и java -jar, но ничего не указывает до root причина. Любая помощь, как его отладить?
Обновление: 1
Это связано с этой настройкой. У меня есть класс DbRepo как @Component, который имеет атрибут srcRepo с @Autowired. Класс SrcRepo с аннотацией @Repository. Похоже, в случае java -jar пружина инициализирует DbRepo без предварительной инициализации srcRepo. Я что-то упускаю здесь очевидное?
Обновление: 2
pom. xml (Ничего особенного)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath />
</parent>
<groupId>*******</groupId>
<artifactId>*******</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>*******</name>
<description>*******</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
.......
</dependencies>
<scm>
<developerConnection>*******</developerConnection>
</scm>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
......
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
........
</pluginRepository>
</pluginRepositories>
Обновление: 3
В этом разница между рабочим и нерабочим java -jar
Не рабочая
@Component
public class DbDao {
@Autowired
SrcRepo srcRepo;
}
рабочая
@Component
public class DbDao {
SrcRepo srcRepo;
public DbDao(SrcRepo srcRepo) {
super();
this.srcRepo = srcRepo;
}
}