熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

抽取spring數據庫連接部分到項目中

2022-06-13   來源: Java開源技術 

  用spring來管理項目的數據庫部分往往比自己去寫連接要容易管理的多 步驟也比較簡單

  項目根目錄下建立conflib目錄將spring相關包coop到lib中並導入建立個文件jdbcpropertiesbeanxml

  jdbcproperties:

  [html]

  driverClassName=orggjtmmmysqlDriver

  url=jdbc:mysql://localhost:/test?useUnicode=true&characterEncoding=UTF

  username=root

  password=root

  initialSize=

  maxActive=

  maxIdle=

  minIdle=

  beanxml:

  [html]

  <?xml version= encoding=UTF?>

  <beans xmlns=/schema/beans

  xmlns:xsi=//XMLSchemainstance xmlns:context=/schema/context

  xmlns:aop=/schema/aop xmlns:tx=/schema/tx

  xsi:schemaLocation=/schema/beans

  /schema/beans/springbeansxsd

  /schema/context /schema/context/springcontextxsd

  /schema/aop /schema/aop/springaopxsd

  /schema/tx /schema/tx/springtxxsd>

  <! 讀取jdbcproperties配置文件    location=classpath:jdbcproperties>

  <context:propertyplaceholder location=classpath:jdbcproperties />

  <!配置數據源 >

  <bean id=dataSource class=monsdbcpBasicDataSource

  destroymethod=close>

  <property name=driverClassName value=${driverClassName} />

  <property name=url value=${url} />

  <property name=username value=${username} />

  <property name=password value=${password} />

  <! 連接池啟動時的初始值 >

  <property name=initialSize value=${initialSize} />

  <! 連接池的最大值 >

  <property name=maxActive value=${maxActive} />

  <! 最大空閒值當經過一個高峰時間後連接池可以慢慢將已經用不到的連接慢慢釋放一部分一直減少到maxIdle為止 >

  <property name=maxIdle value=${maxIdle} />

  <!  最小空閒值當空閒的連接數少於閥值時連接池就會預申請去一些連接以免洪峰來時來不及申請 >

  <property name=minIdle value=${minIdle} />

  </bean>

  <!

  采用注解方式來配置事務針對數據源的事務管理器

  把我們定義的數據源注入到DataSourceTransactionManager類的屬性dataSource中

  >

  <bean id=txManager

  class=orgspringframeworkjdbcdatasourceDataSourceTransactionManager>

  <property name=dataSource ref=dataSource />

  </bean>

  <!

  引入命名空間 xmlns:tx=/schema/tx

  /schema/tx

  /schema/tx/springtxxsd

  采用@Transaction注解方式使用事務管理器

  >

  <tx:annotationdriven transactionmanager=txManager />

  <! 配置業務beanPersonServiceBean >

  <bean id=playerService class=comspringdbPlayerServiceBean>

  <! 向屬性dataSource注入數據源 >

  <property name=dataSource ref=dataSource></property>

  </bean>

  </beans>

  jdbc 不用說了beanxml是主要的配置文件主要有個部分

  () <bean id=dataSource >為配置數據源從jdbcproperties讀取

  如果數據源有多個只要復制這一部分就可以了

  () <! 配置業務beanPersonServiceBean >部分這部分為配置自己的業務service比如我配置的一個

  <bean id=playerService class=comspringdbPlayerServiceBean>

  <! 向屬性dataSource注入數據源 >

  <property name=dataSource ref=dataSource></property>

  </bean>

  id 為唯一的標識 class是類路徑name=dataSource是類中的屬性ref就是要用到的數據源id

  配置文件寫好後就可以寫數據庫讀寫的部分了主要管理在DBServerjava 中

  [java]

  package comspringdb;

  import orgntextApplicationContext;

  import orgntextsupportClassPathXmlApplicationContext;

  public class DBServer {

  private  PlayerService playerService;

  private static DBServer instance = null;

  public static DBServer getInstance() {

  if (instance == null) {

  instance = new DBServer();

  }

  return instance;

  }

  public DBServer(){

  ApplicationContext act = new ClassPathXmlApplicationContext(beanxml);

  playerService = (PlayerService) actgetBean(playerService);

  }

  public PlayerService getPlayerService() {

  return playerService;

  }

  public void setPlayerService(PlayerService playerService) {

  thisplayerService = playerService;

  }

  }

  為了方便就直接在構造函數裡面初始化了代碼也容易理解

  playerService = (PlayerService) actgetBean(playerService);就是對應beanxml中的

  <bean id=dataSource >部分有多個service 繼續添加就可以了

  PlayerService和PlayerServiceBean分別為接口和實現類將需要的方法 定義在service中並在相應的實現類

  實現就可以了

  上述弄完之後寫個測試類測一下

  先在數據庫建個user(idname)表測試代碼

  [java]

  public class TestSpring {

  public static void main(String[] args) {

  Player p = new Player( spring jdbc);

  //add 

  DBServergetInstance()getPlayerService()add(p);

  //query

  Player p = DBServergetInstance()getPlayerService()getPlayer();

  Systemoutprintln(id = +pgetId()+ name = +pgetName());

  }

  運行下得到結果

  id = name = spring jdbc


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28088.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.