Ich habe ein Spring-Projekt und ein MongoRepository. Das MongoRepository ist ein Interface, das wie JPA das MongoRepository erweitert.Spring MongoRepository, wo die Ausnahme zu fangen?
Wenn ich versuche, mein Projekt mit mvn clean install
zu erstellen, wird Spring einmal ausgeführt. Spring versucht, eine Verbindung zu MongoDB herzustellen, die nicht auf meinem Jenkins-Server ausgeführt wird.
Ausnahme = {com.mongodb.MongoSocketOpenException: Exception Öffnung Buchse}, verursacht durch {java.net.ConnectException: Connection refused: connect}
Gibt es eine Möglichkeit, die Ausnahme zu fangen? Ich kann es auf dem Dienst, wo ich mein Repository aufrufe, nicht abfangen, weil diese Methoden nicht ausgeführt werden. Ich denke, es hat etwas mit @autowire
zu tun, aber ich kann nicht herausfinden, wie die Ausnahme zu fangen.
Die Architektur:
application
- resource (api)
- service
- repository extends MongoRepository
Die Anwendung durchsucht das Projekt, die Ressource den Dienst aufruft, ruft der Dienst das Repository und das Repository wirft einen Fehler, weil es nicht zu MongoDB verbinden kann.
Repository:
public interface MetingRepository extends MongoRepository<Meting, String> {
Page<Meting> findAllByRuimteId(String ruimteId, Pageable page);
}
Service:
@Service("metingenService")
public class MetingServiceImpl implements MetingService {
// could I try-catch this?
@Autowired
private MetingRepository metingRepository;
@Override
public Meting addMeting(Meting meting) {
// try-catch does not solve the issue here
return metingRepository.save(meting);
}
}
}
Der einzige Test Ich habe, automatisch generiert:
@RunWith(SpringRunner.class)
@SpringBootTest
public class MetingenServiceApplicationTests {
@Test
public void contextLoads() {
}
}
Stacktrace:
org.springframework.beans.factory.UnsatisfiedDependencyException: Fehler beim Erstellen Bean mit namen 'metingResource': Unbefriedigend Abhängigkeit ausgedrückt durch Feld 'metingService'; verschachtelte Ausnahme ist org.springframework.beans.factory.UnsatisfiedDependencyException: Fehler beim Erstellen einer Bean mit dem Namen 'metingenService': Unzufriedene Abhängigkeit ausgedrückt durch Feld 'metingRepository'; verschachtelte Ausnahme ist org.springframework.beans.factory.BeanCreationException: Fehler beim Erstellen von Bean mit dem Namen 'metingRepository': Der Verweis auf die Bean 'mongoTemplate' kann nicht aufgelöst werden, während die Bean-Eigenschaft 'mongoOperations' festgelegt wird; Verschachtelte Ausnahme ist org.springframework.beans.factory.BeanCreationException: Fehler beim Erstellen der Bean mit dem Namen 'mongoTemplate' in der Klassenpfadressource [org/springframework/boot/autoconfigure/data/mongo/MongoDataAutoConfiguration.class]: Die Bean-Instantiierung über die Factory-Methode ist fehlgeschlagen ; verschachtelte Ausnahme ist org.springframework.beans.BeanInstantiationException: Instanz [org.springframework.data.mongodb.core.MongoTemplate] konnte nicht instanziiert werden: Factory-Methode 'mongoTemplate' hat Ausnahme ausgelöst; verschachtelte Ausnahme ist org.springframework.dao.DataAccessResourceFailureException: Zeitlimit nach 30000 ms, während auf einen Server gewartet wird, der WritableServerSelector entspricht. Die Clientansicht des Clusterstatus lautet {type = UNKNOWN, servers = [{Adresse = localhost: 27017, type = UNKNOWN, state = CONNECTING, Ausnahme = {com.mongodb.MongoSocketOpenException: Exception opening socket}, verursacht durch {java.net. ConnectException: Verbindung abgelehnt: connect}}]; verschachtelte Ausnahme ist com.mongodb.MongoTimeoutException: Zeitlimit nach 30000 ms, während auf einen Server gewartet wird, der WritableServerSelector entspricht. Die Clientansicht des Clusterstatus lautet {type = UNKNOWN, servers = [{Adresse = localhost: 27017, type = UNKNOWN, state = CONNECTING, Ausnahme = {com.mongodb.MongoSocketOpenException: Exception opening socket}, verursacht durch {java.net.ConnectException: Connection refused: connect}}]
Wenn Sie autowire dieses Repo optional möchten Sie @Autowired verwenden können (required = false) – Noixes
@Noixes sogar mit required = false, 'mvn package' startet das Repository und versucht sich zu verbinden. Ich bin verloren, weil es keinen Sinn hat, diese Ausnahmen zu erfassen, soweit ich weiß – Randy
Warum ist der mongodb-Dienst nicht erreichbar? – Noixes