SpringBoot 多模块 自动装载(@Autowired)

以前花了一个周写了一个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

我是在下面的评论中看到的,整个过程差点疯掉 -_-

相关文章
相关标签/搜索