私はSpring Data Jpaを使用しています、これは私のプロジェクト構造です:
App
ConfigPackage
MyConfig
ServicePackage
MyService
RepositoryPackage
MyRepository
これがMyRepository
です:
public interface MyRepository extends JpaRepository<MyEntity, Long> {
}
これがMyService
です:
@Service
public class MyService {
@Autowired
private MyRepository myRepository; <---here
...
}
これがMyConfig
です:
@Configuration
@EnableJpaRepositories(
basePackages = "RepositoryPackage",
entityManagerFactoryRef = "xxx",
transactionManagerRef = "xxx"
)
public class MyConfig {
}
私が使う @Autowired
はMyRepository
をMyService
に注入しますが、IntelliJは常に不平を言います
自動配線できませんでした。 「MyRepository」タイプのBeanが見つかりません
コードが正常にコンパイルおよび実行できたとしても。
IntelliJがこれがエラーではないことを認識できないのはなぜですか? IntelliJの警告を削除する方法
IntelliJバージョン:2018.2.6
それを試してみてください :
@Configuration
@ComponentScan(basePackages = {"your repository package}")
次のいずれかを宣言できます。
@SuppressWarnings("SpringJavaAutowiringInspection")
フィールドで、またはIntellijのコードインスペクションを通じて警告を抑制します(赤い電球をクリックすると、フィールドまたはクラス全体のいずれかで「Beanクラスの自動配線」を抑制できます。
データベース構成で、ベースパッケージを宣言する必要があります。
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "postgreEntityManager",
transactionManagerRef = "postgreTransactionManager",
basePackages = "fr.lab.test.dao"
)
public class PostGreDBConfig {
私は同じ問題を一度経験しましたが、プロジェクトの構造を変更し、MyRepositoryをサービスがあるのと同じパッケージに移動します。これは動作するはずです。なぜ起こるのかわかりません。