@ComponentScan(basePackages = "基础包") @EntityScan(basePackages ="基础包") @EnableJpaRepositories(basePackages = "基础包")
使用此注解,如果使用spring-data-jpa,则扩展CrudRepository或PagingAndSortingRepository而不是JpaRepository。在TestController中给出如下的自动装配:
@Autowired(required = true) CategoryRepository catRepo; 同时在Category中检查id的类型是否为BigDecimal。
您自己实现的
WebApplicationInitializer
和继承AbstractAnnotationConfigDispatcherServletInitializer
的实现是不同的。它们的行为不同是因为您没有注册您自定义的ApplicationContextInitializer
。如何注册ApplicationContextInitializer
在javadoc中有说明(注意有2个方法可以设置ApplicationContextInitializer
的集合)。public class AppInitialzer extends AbstractAnnotationConfigDispatcherServletInitializer { ... protected ApplicationContextInitializer<?>[] getRootApplicationContextInitializers() { return new ApplicationContextInitializer[] { new SpringAppContInit() } ; } }
然而,那个
ApplicationContextInitializer
实际上并没有添加任何不能通过简单设置环境或系统属性来完成的功能。如果您这样做,您就不需要那个初始化部分了。
我还坚信您的
@EnableJpaRepositories
不在正确的类上,您想要启用它们不应该依赖于您的配置文件。