首先是配置JdbcTemplate
<!-- 为IOC容器配置一个JdbcTemplate -->
<bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate">
<property name="dataSource" ref="myDateSource"/>
</bean>
引用数据库
<bean class="com.jdbcTemplate_datasource_test.datasource.MyDataSource" id="myDateSource"scope="singleton">
<property name="driverClassName"value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
其次在Dao的实现层调用方法getDataSource()
@PostConstruct
public void dataSourceInit() {
System.out.println("Dao中正在使用DataSource属性,对象是"+jdbcTemplate.getDataSource());
}
可以使用@PostConstruct注释的方法进行初始化输出,不可以使用静态代码块,因为其执行先于Bean的注入,故无法使用到IOC容器的对象。
如果是自己编写的类可以重写toString方法
public class MyDataSource implements DataSource{
private String url;
private String username;
private String password;
/**
* 设置DriverClassName
* @param driverClassName
*/
public void setDriverClassName(String driverClassName) {
Assert.hasText(driverClassName, "Property 'driverClassName' must not be empty");
String driverClassNameToUse = driverClassName.trim();
try {
Class.forName(driverClassNameToUse, true, ClassUtils.getDefaultClassLoader());
}
catch (ClassNotFoundException ex) {
throw new IllegalStateException("Could not load JDBC driver class [" + driverClassNameToUse + "]", ex);
}
}
public void setUrl(String url) {
this.url = url;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public PrintWriter getLogWriter() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public void setLogWriter(PrintWriter out) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setLoginTimeout(int seconds) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public int getLoginTimeout() throws SQLException {
// TODO Auto-generated method stub
return 0;
}
@Override
public Logger getParentLogger() throws SQLFeatureNotSupportedException {
// TODO Auto-generated method stub
return null;
}
@Override
public <T> T unwrap(Class<T> iface) throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isWrapperFor(Class<?> iface) throws SQLException {
// TODO Auto-generated method stub
return false;
}
@Override
public Connection getConnection() throws SQLException {
// TODO Auto-generated method stub
return DriverManager.getConnection(url, username, password);
}
@Override
public Connection getConnection(String username, String password) throws SQLException {
// TODO Auto-generated method stub
return DriverManager.getConnection(url, username, password);
}
@Override
public String toString() {
return "MyDataSource [url=" + url + ", username=" + username + ", password=" + password + "]";
}
}
现在我们用控制台输出一下结果
Dao中正在使用DataSource属性,对象是MyDataSource [url=jdbc:mysql:///carcheck?serverTimezone=GMT%2B8&charsetEncoding=utf-8, username=root, password=root]