私はSpringプロジェクトとMongoRepositoryを持っています。 MongoRepositoryは、JPAと同様、MongoRepositoryを拡張するインタフェースです。春のMongoRepositoryは、どこに例外をキャッチする?
mvn clean install
でプロジェクトをビルドしようとすると、Springを1回実行します。 SpringはJenkinsサーバ上で動作していないMongoDBへの接続を試みます。
例外= {com.mongodb.MongoSocketOpenException:例外開口ソケット}によって引き起こされる、{java.net.ConnectException:接続が拒否されました:接続}
例外をキャッチする方法はありますか?これらのメソッドは実行されないので、私がリポジトリと呼ぶサービスではキャッチできません。私はそれが@autowire
と関係があると思いますが、例外を捕捉する方法を理解できません。
アーキテクチャ:
application
- resource (api)
- service
- repository extends MongoRepository
アプリケーションプロジェクトをスキャンし、リソースがサービスを呼び出して、サービスは、リポジトリを呼び出し、それがMongoDBのに接続できないため、リポジトリでエラーが発生します。
リポジトリ:
public interface MetingRepository extends MongoRepository<Meting, String> {
Page<Meting> findAllByRuimteId(String ruimteId, Pageable page);
}
サービス:
@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);
}
}
}
私は、自動的に生成されているだけテスト:
@RunWith(SpringRunner.class)
@SpringBootTest
public class MetingenServiceApplicationTests {
@Test
public void contextLoads() {
}
}
スタックトレース:
org.springframework.beans.factory.UnsatisfiedDependencyException:エラー名でBeanを作成する 'metingResource':不満依存関係がフィールドを通して表現 'metingService';ネストされた例外はorg.springframework.beans.factory.UnsatisfiedDependencyExceptionです: 'metingenService'という名前のBeanの作成中にエラーが発生しました:フィールド 'metingRepository'で表現されている満足度の低い依存関係。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:名前 'metingRepository'を持つBeanの作成中にエラーが発生しました:beanプロパティ 'mongoOperations'を設定している間に、 'mongoTemplate'への参照を解決できません。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:クラスパスresource [org/springframework/boot/autoconfigure/data/mongo/MongoDataAutoConfiguration.class]で定義された 'mongoTemplate'という名前のBeanを作成中にエラーが発生しました: ;ネストされた例外はorg.springframework.beans.BeanInstantiationExceptionです:[org.springframework.data.mongodb.core.MongoTemplate]のインスタンス化に失敗しました:ファクトリメソッド 'mongoTemplate'が例外をスローしました。ネストされた例外はorg.springframework.dao.DataAccessResourceFailureExceptionです:WritableServerSelectorと一致するサーバーを待機している間に30000ミリ秒後にタイムアウトしました。クラスター状態のクライアントビューは、{java.net.net}によって引き起こされる{type = UNKNOWN、servers = [{address = localhost:27017、type = UNKNOWN、state = CONNECTING、exception = {com.mongodb.MongoSocketOpenException:Exception opening socket}です。 ConnectException:接続が拒否されました:接続}}];ネストされた例外はcom.mongodb.MongoTimeoutExceptionです:WritableServerSelectorと一致するサーバーを待機している間に30000ミリ秒後にタイムアウトしました。クラスター状態のクライアントビューは、{java.net.net}によって引き起こされる{type = UNKNOWN、servers = [{address = localhost:27017、type = UNKNOWN、state = CONNECTING、exception = {com.mongodb.MongoSocketOpenException:Exception opening socket}です。ConnectException:接続が拒否されました:接続}}]
:
ほとんどの場合、あなたは
@SpringBootTests
は、(統合テストのためである)、代わりに、あなたは、通常のJUnitテストを行うことができます使用しないでください(required = false) – Noixes@noixesはrequired = falseであっても、 'mvn package'はリポジトリを実行して接続しようとします。なぜなら、私が知る限り、それらの例外をキャッチすることはできないからです。 – Randy
mongodbサービスに到達できないのはなぜですか? – Noixes