【发布时间】:2018-04-09 20:41:50
【问题描述】:
我是 sessionFactory 在我的服务上。
@Component
public class MyService {
@Autowired
private SessionFactory sessionFactory;
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
public void persistData(){
...
tx.commit();
session.close();
}
我从
调用此服务@Component
public class CommandLineApp implements CommandLineRunner {
@Autowired
private MyService MyService
public void run(String... args) throws Exception {
MyService.persistData();
}
}
我启动spring boot的主类:
@SpringBootApplication
public class App{
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
当我调用 MyService 时,它会收到错误 nullPointException。当我调试代码时,我可以看到 sessionFactory 为空。为什么没有在 MyService 上注入 sessionFactory?
【问题讨论】:
-
SessionFactory的实例究竟来自哪里。您将需要某种创建实例的提供程序,因为据我所知,Spring项目默认不公开SessionFactory。另一方面,如果您正在自动配置Spring Data JPA,您应该能够获得EntityManagerFactory的实例。 -
你在这里做所有事情吗? baeldung.com/hibernate-5-spring
-
我可以在 Spring Boot 中使用 java config 类吗?
-
如果 Spring 无法满足
@Autowired字段,您的应用程序将无法启动,这很简单,不能是null。因此,您可能正在自己创建 service.class 的新实例。旁边不要使用普通的休眠使用 JPA(除非你真的想自己配置东西而不是让 Spring Boot 为你做艰苦的工作)。
标签: java spring hibernate session spring-boot