我在使用service的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();
}
}
我的春季班开始的主要班级:
@SpringBootApplication
public class App{
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
当我调用MyService时,出现错误nullPointException。当我调试代码时,我可以看到sessionFactory为null。为什么没有在MyService上注入sessionFactory?
最佳答案
这里的问题是SessionFactory
bean仍然没有
可用于弹簧容器以供您注入。
所以首先您需要引导它。
创建一个@configuration文件
或在您的Main.java中添加@Configuration并引导您的bean,如下所示
@Configuration
public class HibernateSessionProvider {
@Bean // If using hibernate.cfg.xml
public void getSessionFactory() {
AnnotationSessionFactoryBean annotationSessionFactoryBean = new AnnotationSessionFactoryBean();
...
return annotationSessionFactoryBean()
}
@Bean // If using java based config to provide DataSource beans , hibernate config
public void getSessionFactory() {
LocalSessionFactoryBean localSessionFactoryBean = new LocalSessionFactoryBean();
...
return localSessionFactoryBean()
}
}
关于java - sessionFactory没有被注入(inject)。永远为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49711458/