Если вы используете Tomcat в качестве сервера приложений, вы можете сделать что-то более похожее на это.
Определите соединение с именем пользователя / паролем в файле context.xml вашего сервера (в отличие от приложения):
<Resource name="jdbc/resourceNameToUse"
auth="Container"
type="javax.sql.DataSource"
username="<UserName>"
password="<Password>"
driverName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/db_name"
maxActive="100"
maxIdle="5"
validationQuery="Select 1"
useCompression="true" />
Затем, когда вы конфигурируете Spring, вы создаете источник данных, который ищет ресурс, определенный выше, используя JNDI:
<bean id="targetDataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName"
value="java:comp/env/jdbc/resourceNameToUse"/>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
<property name="targetDataSource">
<ref local="targetDataSource"/>
</property>
</bean>
На этом этапе вы можете создать экземпляр вашего JdbcTemplate.как bean-компонент Spring, который ссылается на ваш источник данных:
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
Если вы используете Spring 3, вы можете просто пометить JdbcTemplate в вашем DAO как @AutoWired
, и Spring сопоставит имя переменной с идентификатором bean-компонентаВы определили и внедрили JdbcTemplate для вас.Если вы не используете Spring 3, вы можете просто внедрить JdbcTemplate при определении вашего компонента DAO.
public class MyDao {
@AutoWired
private JdbcTemplate jdbcTemplate;
}