数据源是否需要在spring的原型范围内jdbc
问题描述:
当我们使用spring jdbc时,首先定义一个dataSource bean并在创建jdbcTemplate对象时注入它。我想知道的是,我们是否需要在原型范围内定义这个数据源。除非整个应用程序只有一个dataSource对象。我认为这会影响应用程序的性能。数据源是否需要在spring的原型范围内jdbc
这里是我如何在spring配置文件中定义dataSouce。
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/testdb" />
<property name="username" value="root" />
<property name="password" value="123" />
</bean>
在我的DAO类中,我有如下所示的自动装配的dataSOurce。
@Repository
public class RecordDAOImpl {
JdbcTemplate jdbcTemplate = null;
@Autowired
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
}
让我知道什么是为spring mvc web应用程序定义dataSource的最佳方法。
答
我想知道什么是我们需要在原型范围
来定义这个数据源不,我们不需要。我想这不是个好主意,我们可以使用某种连接池数据源和单例作用域bean。
我们也可以有多个数据库,并提供每个自己的数据源单身作用域,这是没有任何问题的。
让我知道什么是为spring mvc web应用程序定义dataSource的最佳方法。
在xml文件中定义数据源没有任何问题(尽管许多开发人员似乎都避免使用xml)。我喜欢用java配置来做,因为我觉得它更易于阅读。
取决于驱动程序和数据库它看起来或多或少这样的:
@Configuration
class DatasourceConfig {
@Bean
DataSource datasource() {
PGPoolingDataSource dataSource = new PGPoolingDataSource();
dataSource.setPassword("pass");
dataSource.setPortNumber(123);
dataSource.setUser("user");
dataSource.setMaxConnections(10);
return dataSource;
}
}