我一直试图在Spring配置文件中解决数据库连接超过12小时,而且我还没有弄清楚问题是什么,或者我愚蠢地错过了什么。
我提到了这一个。 https://spring.io/guides/gs/accessing-data-mysql/
希望上面的一个有效,但遗憾的是tomcat日志说连接为null。
另一方面,我有工作联系,不幸的是它不再工作了。
@Configuration
@EnableWebMvc
@EnableTransactionManagement
@ComponentScan(basePackages = { "com.bean.BeanProject" })
@EnableJpaRepositories(basePackages = "com.bean.BeanProject.repo")
@PropertySource("classpath:jdbc.properties")
public class Config {
@Autowired
private Environment env;
private Logger logger = LoggerFactory.getLogger(Config.class);
private static final String CONTEXT_FACTORY = "org.apache.naming.java.javaURLContextFactory";
@Bean
public DataSource dataSource() {
final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
dsLookup.setResourceRef(true);
DataSource dataSource = dsLookup.getDataSource("jndi/beanProjectDB");
logger.info("BeanProject DB Connection Established");
return dataSource;
}
@Bean
@PersistenceContext(type = PersistenceContextType.EXTENDED)
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(dataSource());
entityManagerFactoryBean
.setPersistenceXmlLocation("classpath:/META-INF/persistence.xml");
entityManagerFactoryBean.setPersistenceUnitName("BeanProject");
return entityManagerFactoryBean;
}
@Bean
public JpaTransactionManager transactionManager() {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory()
.getObject());
return transactionManager;
}
@Bean
public Context context() throws NamingException {
return new javax.naming.InitialContext(properties());
}
}
的persistence.xml:
<persistence-unit name="BeanProject" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<non-jta-data-source>jndi/beanProjectDB</non-jta-data-source>
<class>com.bean.BeanProject.repo.Entity.User</class>
<class>com.bean.BeanProject.repo.Entity.Vehicle</class>
<properties>
<property name="hibernate.dialect"
value="org.hibernate.dialect.MySQLInnoDBDialect" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>
application.properties:
spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mysql://localhost:3306/beanProjectDB
spring.datasource.username=logindb
spring.datasource.password=test
以上配置导致错误
引起:javax.naming.NameNotFoundException:名称 [jndi / beanProjectDB]未绑定在此Context中。无法找到 [JNDI]。
寻求你的帮助..