如何访问连接URL

时间:2017-07-10 14:02:48

标签: java spring spring-jdbc

我正在使用spring jdbc。我使用以下代码来获取jdbc连接

public void setDataSource(DataSource dataSource){
        this.dataSource = dataSource;
        setJdbcTemplate(new JdbcTemplate(this.dataSource));
        setNamedParamdbcTemplate(new NamedParameterJdbcTemplate(this.dataSource));
        if(connectionUrl==null){
        Connection con;

            try {
                con = getJdbcTemplate().getDataSource().getConnection();
                connectionUrl = con.getMetaData().getURL();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    }

但我得到以下异常。

  

配置的阻止超时内没有可用的托管连接   (0 [ms])

我通过调试代码获取了打印件。以上是getJdbcTemplate().getDataSource()代码的输出。

Click here for the image 如果我写了getJdbcTemplate().getDataSource().getConnection();,则会出现以下异常。我怎么才能访问 connectionURL图像中存在。

  

配置的阻塞超时内没有可用的托管连接(0   [毫秒])

1 个答案:

答案 0 :(得分:0)

您需要在Spring上下文文件中配置DataSource,如下所示,并附上数据库连接详细信息。

   <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="root" />
    </bean> 

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource" />
    </bean>

要访问jdbcTemplate API,您需要注入java类。

@Repository
public class EmployeeDAO{

  @Autowired
  private JdbcTemplate jdbcTemplate;

  public List<Emplyee> getEmployeeList(){
    //If you want to print the connection URL in your method
     System.out.println("Connection URL: "+ jdbcTemplate.getDataSource().getConnection().getMetaData().getURL());
  }
}

这将打印您在spring上下文文件中配置的DataSource URL(jdbc:mysql:// localhost:3306 / testDB)