java

位置:IT落伍者 >> java >> 浏览文章

抽取spring数据库连接部分到项目中


发布日期:2020年03月21日
 
抽取spring数据库连接部分到项目中

用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

               

上一篇:Java应用利器组合:Ant+JUnit+Cobertura

下一篇:浅谈spring时序调度Quartz