java - 如何修复休眠配置中的 NPE?
问题描述
@Autowired Environment env - 始终为空。这是我的 HibernateConf.java:
@Configuration
@EnableTransactionManagement
@PropertySource({ "classpath:hibernate.properties" })
public class HibernateConf{
@Autowired
private Environment env;
@Bean
public LocalSessionFactoryBean sessionFactory() {
final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan(new String[]{"Enteties"});
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean
public DataSource dataSource() {
final BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("com.mysql.cj.jdbc.Driver")));
dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc:mysql://localhost:3306/tutorialdb?createDatabaseIfNotExist=true")));
dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("root")));
dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("9339")));
return dataSource;
}
@Bean
public PlatformTransactionManager hibernateTransactionManager() {
final HibernateTransactionManager transactionManager = new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory().getObject());
return transactionManager;
}
private final Properties hibernateProperties() {
final Properties hibernateProperties = new Properties();
hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("create-drop"));
hibernateProperties.setProperty("hibernate.dialect", env.getProperty("org.hibernate.dialect.MySQL5Dialect"));
return hibernateProperties;
}
}
所以主要问题是这@Autowired private Environment env;
总是 NPE,但我不知道为什么,因为这个配置类的每个示例都与我的相同。我该如何解决?
解决方案
(代表问题作者发布,将其从问题移至答案空间)。
我找到了解决这个问题的方法。首先,您需要将其删除@Autowired private Environment env;
,dataSource.setPassword("9339")
然后仅将其与 String 参数一起使用。
第三,你不需要 5.0...mysql-connector 不是 4.0...但是这个:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
推荐阅读
- javascript - Lodash sortBy 以随机顺序返回元素(未排序)
- css - Firefox 中的 CSS 缩放属性
- django - 安装的 django-cors-headers 仍然发生跨源图像错误
- c# - Unity -> Android 通信:在嵌入时调试 Android Java 插件
- css - CSS 网格在 Safari 中不起作用
- ruby - ruby 类和方法不起作用
- java - 颜色选择器不工作
- java - Tableview 不填充 JavaFX
- liquibase - Liquibase 包含上下文
- android - 此处缺少验证(模拟)的方法调用。如何测试动态值