Tomcat9 JNDI 配置数据源 并 应用到Spring JdbcTemplate
修改Tomcat9 的 content.xml 文件
<Resource name="jdbc/scn" auth="Container"
type="javax.sql.DataSource" maxTotal="100" maxIdle="5"
maxWaitMillis="10000" username="root" password="******"
driverClassName="******" url="******"
validationQuery="select 1" />
配置JdbcConfig
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jndi.JndiObjectFactoryBean;
@Configuration
public class JdbcConfig {
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean
public DataSource dataSource(JndiObjectFactoryBean dataSourceFactory) {
return (DataSource) dataSourceFactory.getObject();
}
@Bean
public JndiObjectFactoryBean dataSourceFactory() {
JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean();
jndiObjectFactoryBean.setJndiName("jdbc/scn");
jndiObjectFactoryBean.setResourceRef(true);
jndiObjectFactoryBean.setProxyInterface(javax.sql.DataSource.class);
return jndiObjectFactoryBean;
}
}
如何写Dao层的测试
JNDI 必须在Tomcat容器内运行,因此测试也是一个问题
配置测试数据源,测试数据源一般用xml,而不是JNDI。
可以使用Spring profile来选择数据源。