我有一个Spring Boot应用程序,并希望将其部署为WAR到Tomcat 7。为此,我需要将配置文件放在WAR之外,这样我就可以将相同的WAR部署到我的测试和生产服务器上,并通过配置获取mysql连接。
为此,我想要配置我的Spring Boot应用程序,使用在Tomcat实例中配置为JNDI数据源的mysql连接。
Spring Boot能否做到这一点?如果可以,具体如何实现呢?
或者,是否可以在Spring 4中轻松完成此操作,而不必使用基于xml的配置方式?
我有一个Spring Boot应用程序,并希望将其部署为WAR到Tomcat 7。为此,我需要将配置文件放在WAR之外,这样我就可以将相同的WAR部署到我的测试和生产服务器上,并通过配置获取mysql连接。
为此,我想要配置我的Spring Boot应用程序,使用在Tomcat实例中配置为JNDI数据源的mysql连接。
Spring Boot能否做到这一点?如果可以,具体如何实现呢?
或者,是否可以在Spring 4中轻松完成此操作,而不必使用基于xml的配置方式?
如果您使用的是Spring Boot 1.2或更高版本,则会更加容易。 您只需将以下内容添加到application.properties中即可
spring.datasource.jndi-name=java:comp/env/jdbc/my_database
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
的错误。 - cbmeeks@Bean
public DataSource dataSource() {
JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
DataSource dataSource = dataSourceLookup.getDataSource("jdbc/apolloJNDI");
return dataSource;
}
Application.java
中。@Bean
public DataSource dataSource() {
JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
DataSource dataSource = dataSourceLookup.getDataSource("java:comp/env/jdbc/mysqldb");
return dataSource;
}
然后按照https://spring.io/guides/gs/accessing-data-jpa/中的示例设置TransactionManager
和Hibernate特定属性。
@EnableAutoConfiguration
,则不需要设置事务管理器(或任何基本用法的Hibernate内容)。 - Dave SyerHibernateJpaVendorAdapter
和使用@EnableAutoConfiguration
中的setDatabase(Database.ORACLE)
的情况下进行设置? - Yue LiuHibernateJpaAutoConfiguration
的源代码。 - Yue Liu