我正在通过示例应用程序学习 Spring data JPA(遵循 enter link description here 上的教程),但在让我的 JPA 存储库正常工作时遇到了困难。
产品存储库(产品是一个实体)
@Repository
public interface ProductRepository extends JpaRepository<Product , Long> {
}
产品存储库Impl
public class ProductRepositoryImpl {
@Autowired
private ProductRepository productRepo;
/**
* @return the productRepo
*/
public ProductRepository getProductRepo() {
return productRepo;
}
/**
* @param productRepo the productRepo to set
*/
public void setProductRepo(ProductRepository productRepo) {
this.productRepo = productRepo;
}
public Product findOne(Long id) {
return productRepo.findOne(id);
}
}
Spring 配置
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
<repositories base-package="com.springtest" />
<jpa:repositories base-package="com.springtest.repository"/>
<context:component-scan base-package="com.springtest"/>
</beans:beans>
主类
public class MainClass {
public static void main(String[] args) {
Configuration configuration = new Configuration().configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
.applySettings(configuration.getProperties())
.buildServiceRegistry();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
ProductRepositoryImpl productService = new ProductRepositoryImpl();
Product product = productService.findOne(1L);
session.close();
}
}
但每次运行此命令时,productRepo
都会得到 null
。谁能告诉我我在这里缺少什么吗?
编辑:创建 Autowiring 的实现类。
最佳答案
Spring只能将bean注入(inject)到由Spring创建的其他Spring bean中。您使用
创建 MainClass 实例new MainClass()
所以 Spring 完全不知道这个对象的存在,也不能神奇地向这个对象注入(inject)任何东西。
您需要创建一个 Spring 上下文,向它请求一个 bean,然后使用这个 bean。
阅读introduction to Spring在文档中。
关于spring - 无法 Autowiring Spring 数据 JPA 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20173378/