启动时Spring Application Initializer数据库配置

时间:2017-12-03 10:36:54

标签: java mysql spring spring-mvc tomcat

我一直试图在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:名称   [jnd​​i / beanProjectDB]未绑定在此Context中。无法找到   [JNDI]。

寻求你的帮助..

0 个答案:

没有答案