41

GradleでインポートされたカスタムライブラリからBeanを自動配線するのに苦労しています。同様のトピックをいくつか読んだ後でも、解決策を見つけることができません。

別のプロジェクト (コンポーネント、リポジトリなどを含むカスタム ライブラリ) に依存する Spring Boot プロジェクトがあります。このライブラリは、Spring 非実行可能 jar であり、主にドメイン エンティティとリポジトリで構成されています。実行可能な Application.class とプロパティはありません...

アプリケーションを起動すると、(ライブラリからの) 「CustomUserService」Bean が初期化されようとしていることがわかりますが、その中で自動配線された Bean のロードに失敗しました (インターフェース UserRepository)...

エラー:

com.myProject.customLibrary.configuration.CustomUserDetailsS​​ervice のコンストラクターのパラメーター 0 には、見つからないタイプ 'com.myProject.customLibrary.configuration.UserRepository' の Bean が必要でした。

「注文」を設定して明示的にロードし(を使用scanBasePackageClasses)、パッケージとマーカークラスでスキャンし、追加のEnableJPARepository注釈を追加しようとしましたが、何も機能しません...

コード例 (わかりやすくするためにパッケージ名は変更されています)

package runnableProject.application;

import runnableProject.application.configuration.ServerConfigurationReference.class
import com.myProject.customLibrary.SharedReference.class

//@SpringBootApplication(scanBasePackages = {"com.myProject.customLibrary", "runnableProject.configuration"}) 
//@EnableJpaRepositories("com.myProject.customLibrary")  

@SpringBootApplication(scanBasePackageClasses = {SharedReference.class, ServerConfigurationReference.class})   
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

}

ライブラリのクラス:

package com.myProject.customLibrary.configuration;

import com.myProject.customLibrary.configuration.UserRepository.class;

@Service
public class CustomUserDetailsService implements UserDetailsService {
    private UserRepository userRepository;    

    @Autowired
    public CustomUserDetailsService(UserRepository userRepository) {
        this.userRepository = userRepository;       
    }
...

package myProject.customLibrary.configuration;

@Repository
public interface UserRepository extends CustomRepository<User> {
    User findByLoginAndStatus(String var1, Status var2);

    ...
}
4

3 に答える 3