spring-配置datasource注解方式

/spring-ioc-v5/src/main/resources/config.properties

jdbcDriver=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql:///jtsys?useUnicode=true&characterEncoding=utf-8
jdbcUsername=root
jdbcPassword=123456

/spring-ioc-v5/src/main/java/config/AppRootConfig.java

package config;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.PropertySource;

import com.alibaba.druid.pool.DruidDataSource;

/**
 * 使用此配置類替換spring-configs.xml
 * @Configuration 描述這個(gè)類是個(gè)配置類
 * @ComponentScan 用于定義要掃描的具體包
 */

@PropertySource("classpath:config.properties")
public class AppRootConfig {
    
    
    /**
     * 整合第三方bean
     * @return
     */
    @Bean("dataSource")//假如沒有指定名字,默認(rèn)為方法名
    @Lazy(false)
    public DataSource newDataSource(@Value("${jdbcDriver}")String driver,
            @Value("${jdbcUrl}")String url,
            @Value("${jdbcUsername}")String user,
            @Value("${jdbcPassword}")String password){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(user);
        ds.setPassword(password);
        return ds;
    }
}

調(diào)用生命周期方法

initMethod="init",destroyMethod="close"

package config;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.PropertySource;

import com.alibaba.druid.pool.DruidDataSource;

/**
 * 使用此配置類替換spring-configs.xml
 * @Configuration 描述這個(gè)類是個(gè)配置類
 * @ComponentScan 用于定義要掃描的具體包
 */

@Configuration
@PropertySource("classpath:config.properties")
public class AppRootConfig {
    
    
    /**
     * 整合第三方bean
     * @return
     */
    //@Bean描述這個(gè)類的方法由sping管理
    @Bean(value="dataSource",initMethod="init",destroyMethod="close")//假如沒有指定名字,默認(rèn)為方法名
    @Lazy(false)
    public DataSource newDataSource(@Value("${jdbcDriver}")String driver,
            @Value("${jdbcUrl}")String url,
            @Value("${jdbcUsername}")String user,
            @Value("${jdbcPassword}")String password){
        //@Value用于讀取配置文件中的內(nèi)容
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(user);
        ds.setPassword(password);
        return ds;
    }
}

package test;

import org.junit.After;
import org.junit.Before;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import config.AppRootConfig;

public class TestBase {
    protected AnnotationConfigApplicationContext ctx;

    @Before
    public void init(){
        ctx = new AnnotationConfigApplicationContext(AppRootConfig.class);
    }
    @After
    public void close(){
        ctx.close();
    }
}

package test;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.junit.Test;



public class TestDruidDataSource01 extends TestBase {
    @Test
    public void testDruidDataSource() throws SQLException{
         DataSource ds = ctx.getBean("dataSource",DataSource.class);
         System.out.println(ds);
         System.out.println(ds.getClass().getName());
         Connection conn = ds.getConnection();
         System.out.println(conn);
         conn.close();
    }
}
九月 07, 2018 9:17:15 上午 org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@16f65612: startup date [Fri Sep 07 09:17:15 CST 2018]; root of context hierarchy
九月 07, 2018 9:17:15 上午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} inited
{
    CreateTime:"2018-09-07 09:17:15",
    ActiveCount:0,
    PoolingCount:0,
    CreateCount:0,
    DestroyCount:0,
    CloseCount:0,
    ConnectCount:0,
    Connections:[
    ]
}
com.alibaba.druid.pool.DruidDataSource
com.mysql.jdbc.JDBC4Connection@e056f20
九月 07, 2018 9:17:16 上午 org.springframework.context.annotation.AnnotationConfigApplicationContext doClose
信息: Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@16f65612: startup date [Fri Sep 07 09:17:15 CST 2018]; root of context hierarchy
九月 07, 2018 9:17:16 上午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} closed
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 閨女,你要慢慢長大。爸爸在外面工作甚是想你,爸爸很想每天都能抱抱你親親你,看著你一天天長大。 閨...
    deep7blue閱讀 701評論 0 1
  • 今天就兢兢業(yè)業(yè)的寫了一天代碼,到八點(diǎn)半左右打卡下班回家,一天就是這么簡單,若要做個(gè)細(xì)分的話,上午寫了產(chǎn)品詳情部分,...
    8f6f2a102b12閱讀 435評論 0 0

友情鏈接更多精彩內(nèi)容