以前花了一個周寫了一個springboot的demo,主要整合了swagger,spring data jpa,還有一些切面日誌的應用。java
後來直接用來作項目,在寫設計文檔的時候絞盡腦汁分了好幾個模塊,爲了更好的解耦和擴展。因而就把demo拆成了多個maven模塊,但隨即就出現了問題,花了一天時間解決。好傷。web
各個模塊:spring
解決方案:springboot
@SpringBootApplication @ComponentScan(basePackages = {"cn.kl.eds.web", "cn.kl.eds.service"}) @EnableJpaRepositories(basePackages = "cn.kl.eds.dao") @EntityScan(basePackages = "cn.kl.eds.entity") public class App{ //發射App public static void main(String[] args) { SpringApplication.run(App.class, args); } }
問題一:沒法裝載service中的@Servicemaven
App啓動類使用 @ComponentScanide
主要原理是,@SpringBootApplication這個註解包括了@ComponentScan,但它默認是掃描App.class所在的包,因此,須要顯示掃描指定的包。spa
問題二:沒法裝載 spring data jpa 的接口,如UserRepo.net
App啓動類使用 @EnableJpaRepositories設計
@Repository public interface UserRepo extends JpaRepository<User, Integer> { @Override @Query("select u from #{#entityName} u where u.id = ?1") User findOne(Integer id); }
問題三:能夠裝載jpa接口了,可是實體類 "Not a managed type"日誌
App啓動類使用 @EntityScan
我是在下面的評論中看到的,整個過程差點瘋掉 -_-