1、在使用SpringBoot項目的時候,我們只需要添加spring-boot-starter-data-jpa的依賴就可以使用了。其實是spring-boot-autoconfigure幫我們做好了,在該jar包下的META-INF中spring.factories中可以找到
org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration,幫我們自動配置了Spring-Data-Jpa Repository,我們可以使用@EnableJpaRepositories注解來覆蓋默認的配置。
2、@EnableJpaRepositories
value:basePackages的別名,簡化basePackages。
basePackages:用於配置掃描Repositories所在的包。填寫字符串(或字符串數組)形式的包名。
basePackageClasses:basePackages的安全替代選選項。指定一個要掃描包中的一個類或接口,將掃描所在包中的所有repository。
可以考慮在每個要掃描的包中創建一個類或接口,它除了被這個屬性引用外,沒有其他用途。
includeFilters:指定哪些類型的組件被掃描。
excludeFilters:指定哪些類型的組件不被掃描。
repositoryImplementationPostfix:查找自定義存儲庫實現時要使用的后綴。默認為Impl。對於名為PersonRepository的存儲庫,將通過掃描PersonRepositoryImpl來查找相應的實現類。
namedQueriesLocation:配置Spring-Data的named queries 屬性文件的位置,默認META-INF/jpa-named-queries.properties。
queryLookupStrategy:查詢方法的查詢策略。默認為QueryLookupStrategy.Key.CREATE_IF_NOT_FOUND。
repositoryFactoryBeanClass:用於每個存儲庫實例的FactoryBean類。默認為JpaRepositoryFactoryBean。
repositoryBaseClass:配置存儲庫基類,以用於為該特定配置創建存儲庫代理。
entityManagerFactoryRef:配置EntityManagerFactory bean定義的名稱。默認為entityManagerFactory。
transactionManagerRef:配置PlatformTransactionManager bean定義的名稱。默認為transactionManager。
considerNestedRepositories:配置是否發現嵌套的Repository接口(如定義為內部類)。默認為false。
enableDefaultTransactions:配置Spring-Data-Jpa 的Repositories是否啟用默認事務,默認為true。如果禁用,則必須在外層使用。
bootstrapMode:配置在引導生命周期中何時初始化Repository。默認為BootstrapMode.DEFAULT,除了添加了BootstrapMode.LAZY的接口外,其他接口立即初始化。
BootstrapMode.LAZY,Repository的bean定義被認為是懶加載注入,並且只在首次使用時初始化,即應用程序可能在沒有初始化Repository的情況下完全啟動。
BootstrapMode.DEFERRED,Repository的bean定義被認為是懶加載注入,但存儲庫初始化在應用程序上下文引導完成時觸發。
escapeCharacter:配置在包含contains、startsWith或endsWith子句的派生查詢中用於轉義 _ 或 % 的通配符字符。
源碼地址:https://github.com/caofanqi/study-spring-data-jpa