2017-02-25 2 views
0

Lorsque nous utilisons spring jdbc, nous définissons d'abord un bean dataSource et l'injectons lors de la création de l'objet jdbcTemplate. Ce que je veux savoir, c'est que nous devons définir cette source de données dans la portée du prototype. À moins qu'il n'y ait qu'un seul objet dataSource pour l'application entière. Je pense que cela affecte la performance des applications.La source de données doit-elle être dans la portée du prototype au printemps jdbc

Voici comment j'ai défini dataSouce dans un fichier de configuration de ressorts.

<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> 

Dans ma classe DAO, j'ai auto-piloté dataSOurce comme ci-dessous. Faites-moi savoir quelle est la meilleure façon de définir dataSource pour l'application Web print Spring mvc.

Répondre

1

Ce que je veux savoir est-nous devons définir ce dataSource portée prototype

Non, nous ne avons pas besoin. Je suppose que ce ne serait pas une bonne idée, nous pouvons utiliser une source de données de pool de connexion et un bean singleton.

Nous pouvons également avoir plusieurs bases de données et fournir pour chaque champ de données propre singleton portée, il n'y a aucun problème avec cela. Faites-moi savoir quelle est la meilleure façon de définir dataSource pour l'application Web print Spring mvc. Il n'y a rien de mal à définir vos sources de données dans les fichiers XML (bien que de nombreux développeurs semblent éviter xml). J'aime le faire en utilisant java config, puisque je me sens comme c'est plus facile à lire.

Selon le conducteur et la base de données il ressemblerait plus ou moins comme ça:

@Configuration 
class DatasourceConfig { 

    @Bean 
    DataSource datasource() { 
     PGPoolingDataSource dataSource = new PGPoolingDataSource(); 
     dataSource.setPassword("pass"); 
     dataSource.setPortNumber(123); 
     dataSource.setUser("user"); 
     dataSource.setMaxConnections(10); 
     return dataSource; 
    } 
}