2012-09-29 8 views
11

Ho esaminato la documentazione per definire un bean. Non sono chiaro su quale file di classe utilizzare per un database Mysql. Qualcuno può compilare la definizione del bean qui sotto?Come definire un bean di origine dati MySql tramite XML in primavera

<bean name="dataSource" class=""> 
    <property name="driverClassName" value="" /> 
    <property name="url" value="mysql://localhost/GameManager" /> 
    <property name="username" value="gamemanagertest" /> 
    <property name="password" value="1" /> 
</bean> 

risposta

38
<bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="url" value="jdbc:mysql://localhost:3306/GameManager" /> 
    <property name="username" value="gamemanagertest" /> 
    <property name="password" value="1" /> 
</bean> 

http://docs.spring.io/spring-data/jdbc/docs/1.1.0.M1/reference/html/orcl.datasource.html

+0

L'URL era sbagliato. L'ho riparato. È davvero il nome utente e la password impostati dall'utente? In qualche modo ne dubito. – duffymo

+0

Cosa succede se qualcuno desidera utilizzare il pool di connessioni? –

5

utilizzare questa classe org.springframework.jdbc.datasource.DriverManagerDataSource-DriverManagerDataSource. Come best practice è meglio se isoliamo i valori del database in un file .properties e lo configuriamo nella nostra configurazione xml del servlet di primavera. Nell'esempio seguente le proprietà sono memorizzate come coppie chiave-valore e accediamo allo value utilizzando lo key corrispondente.

applicationContext-dataSource.xml:

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close"> 
    <property name="driverClassName" value="${jdbc.driverClassName}" /> 
    <property name="url" value="${jdbc.url}" /> 
    <property name="username" value="${jdbc.username}"/> 
    <property name="password" value="${jdbc.password}"/> 
    <property name="connectionCachingEnabled" value="true"/> 
</bean> 

<context:property-placeholder location="classpath:jdbc.properties"/> 

jdbc.propeties di file:

jdbc.driverClassName=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://localhost:3306/sample_db 
jdbc.username=root 
jdbc.password=sec3ret 
+1

Sì, ma l'uso dei segnaposti di proprietà non era il punto e complica semplicemente il problema. Inoltre, perché stai dichiarando i tuoi bean di infrastruttura nel tuo livello di presentazione? Inoltre, l'utilizzo dei file delle proprietà viene sostituito utilizzando le variabili di ambiente. – cyotee

+0

Sì, il file delle proprietà non è il punto, ma dove puoi vedere il livello di presentazione nella mia risposta e credo che l'uso del file 'properties' sia una buona pratica piuttosto che modificare la configurazione xml http://stackoverflow.com/a/883910/ 1.793.718. Permette di memorizzare più coppie chiave-valore e come useresti le variabili d'ambiente invece dei file di proprietà? potresti fornirmi un link? – Lucky

+0

["Questo è utile per consentire alla persona che distribuisce un'applicazione di personalizzare le proprietà specifiche dell'ambiente (ad esempio URL di database, nomi utente e password), senza la complessità o il rischio di modificare il file di definizione XML principale oi file per il contenitore."] (http://docs.spring.io/spring/docs/2.5.x/reference/beans.html#beans-factory-placeholderconfigurer) – Lucky