[使用心得]maven2之m2eclipse使用手册之四编写通用Dao实例(三)
2010-06-02 22:33
661 查看
对于Service,由于功能跟Dao的差不多,所以我把主要调用方法的部分抽出来做成公共,而事务的话由于还没测试所以先去掉,接口代码就不附上了
AbstractBasicService:采用spring注解把basicDao注入,使用的所有Service类分别继承AbstractBasicService,把所引用的bean的class注入到AbstractBasicService中
在spring3.02现在有个新特性可以让你用一个Java类当作一个bean标签来使用,所以spring的配置文件只需要写2句话就可以了如果要带上事务的话则3句,配置spring的代码如下:
bean中有个地方需要读取properties所以还需要加入一个读取配置文件的工厂
PropertiesFactory:
springApplicationContext.properties:
url:驱动地址
driverClassName:驱动名称
username:数据库名字
password:数据库密码
packages:spring要扫描的包以,多个以分割
AbstractBasicService:采用spring注解把basicDao注入,使用的所有Service类分别继承AbstractBasicService,把所引用的bean的class注入到AbstractBasicService中
publicabstractclassAbstractBasicService<TextendsJavaBean,PKextendsSerializable> implementsBasicServiceIf<T,PK>{ privateBasicDaoIf<T,PK>basicDao; protectedClass<T>javabeanclass; /** *创建一个新的实例AbstractBasicService. * *@paramjavabeanclass */ protectedAbstractBasicService(Class<T>javabeanclass){ this.javabeanclass=javabeanclass; } /** *basicDao * *@returnthebasicDao *@sinceCodingExampleVer(编码范例查看)1.0 */ publicBasicDaoIf<T,PK>getBasicDao(){ returnbasicDao; } /** *@parambasicDao *thebasicDaotoset */ @Resource(name="basicDao") publicvoidsetBasicDao(BasicDaoIf<T,PK>basicDao){ this.basicDao=basicDao; } @Override publicList<T>findAll(){ returnbasicDao.findAll(javabeanclass); } }
以上都是公共部分代码,测试代码,则放到src/test/java目录下,而spring的配置文件放在src/test/resources目录下,
spring的配置文件applicationContext.xml如下:
<?xmlversion="1.0"encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:annotation-config/> <context:component-scanbase-package="org.lxh"/> <tx:annotation-driventransaction-manager="hibernateTransactionManager"/> </beans>
在spring3.02现在有个新特性可以让你用一个Java类当作一个bean标签来使用,所以spring的配置文件只需要写2句话就可以了如果要带上事务的话则3句,配置spring的代码如下:
@Configuration
publicclassBeanConfig{
privatestaticPropertiesFactoryfactory=PropertiesFactory.getInstance();
@Bean(name={"basicDao"})
publicBasicDaoIf<JavaBean,Serializable>basicDao(){
returnBasicDaoFactory.getBasicDao();
}
@Bean(name={"dataSource"})
publicBasicDataSourcedataSource(){
BasicDataSourcebds=newBasicDataSource();
bds.setDriverClassName((String)factory
.getPropertyValueOrProperties("driverClassName"));
bds.setUrl((String)factory.getPropertyValueOrProperties("url"));
bds.setUsername((String)factory
.getPropertyValueOrProperties("username"));
bds.setPassword((String)factory
.getPropertyValueOrProperties("password"));
returnbds;
}
@Bean(name={"sessionFactory"})
publicSessionFactorygetSessionFactory()throwsException{
AnnotationSessionFactoryBeansessionFactoryBean=newAnnotationSessionFactoryBean();
sessionFactoryBean.setDataSource(this.dataSource());
sessionFactoryBean.setHibernateProperties((Properties)factory
.getPropertyValueOrProperties(""));
StringpackagesToScan=(String)factory
.getPropertyValueOrProperties("packages");
String[]packages=packagesToScan.split(":");
if(null==packages){
sessionFactoryBean
.setPackagesToScan(newString[]{packagesToScan});
}else{
sessionFactoryBean.setPackagesToScan(packages);
}
sessionFactoryBean.afterPropertiesSet();
returnsessionFactoryBean.getObject();
}
@Bean(name={"hibernateTemplate"})
publicHibernateTemplategetHibernateTemplate()throwsException{
HibernateTemplatehibernateTemplate=newHibernateTemplate();
hibernateTemplate.setSessionFactory(this.getSessionFactory());
returnhibernateTemplate;
}
@Bean(name={"hibernateTransactionManager"})
publicHibernateTransactionManagergetHibernateTransactionManager()
throwsException{
HibernateTransactionManagerhibernateTransactionManager=newHibernateTransactionManager();
hibernateTransactionManager.setSessionFactory(this.getSessionFactory());
returnhibernateTransactionManager;
}
}
bean中有个地方需要读取properties所以还需要加入一个读取配置文件的工厂
PropertiesFactory:
publicclassPropertiesFactory{
privatestaticfinalStringFILE="springApplicationContext.properties";
privatestaticPropertiesFactorypropertiesFactory=newPropertiesFactory();
privateInputStreamin;
privatePropertiesp;
publicstaticPropertiesFactorygetInstance(){
returnpropertiesFactory;
}
/**
*创建一个新的实例PropertiesFactory.
*
*/
privatePropertiesFactory(){
super();
}
publicvoidinit(){
in=this.getClass().getClassLoader().getResourceAsStream(FILE);
}
publicObjectgetPropertyValueOrProperties(finalStringproperty){
try{
init();
p=newProperties();
p.load(in);
if(StringUtils.isNotEmpty(property))
returnp.getProperty(property);
else
returnp;
}catch(Exceptione){
e.printStackTrace();
returnnull;
}
}
springApplicationContext.properties:
url:驱动地址
driverClassName:驱动名称
username:数据库名字
password:数据库密码
packages:spring要扫描的包以,多个以分割
#JDBCConfig
url=jdbc:mysql://localhost:3306/testUser
driverClassName=com.mysql.jdbc.Driver
username=root
password=root
#HibernateConfig
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.hbm2ddl.auto=update
hibernate.format_sql=true
hibernate.show_sql=true
#SpringConfig
packages=org.lxh.bean
相关文章推荐
- [使用心得]maven2之m2eclipse使用手册之四编写通用Dao实例(四)
- [使用心得]maven2之m2eclipse使用手册之四编写通用Dao实例(一)
- [使用心得]maven2之m2eclipse使用手册之四编写通用Dao实例(二)
- [使用心得]maven2之m2eclipse使用手册之七通用容器插件cargo-maven2-plugin
- [使用心得]maven2之m2eclipse使用手册之六使用Maven2插件创建一个简单的SSH2项目之jetty篇(二)
- [使用心得]maven2之m2eclipse使用手册之六使用Maven2插件创建一个简单的SSH2项目之glassfish篇(二)
- maven2之m2eclipse使用手册之四编写通用Dao实例(四)
- [使用心得]maven2之m2eclipse使用手册之六使用Maven2插件创建一个简单的SSH2项目之tomcat篇
- [使用心得]maven2之m2eclipse使用手册之二m2eclipse功能介绍
- maven2之m2eclipse使用手册之四编写通用Dao实例(三)
- [使用心得]maven2之m2eclipse使用手册之三第一个Simple MavenProject与Pom.xml配置说明
- [使用心得]maven2之m2eclipse使用手册之六使用Maven2插件创建一个简单的SSH2项目之glassfish篇(一)
- maven2之m2eclipse使用手册之四编写通用Dao实例(一)
- [使用心得]maven2之m2eclipse使用手册之六使用Maven2插件创建一个简单的SSH2项目之jetty篇(三)
- [使用心得]maven2之m2eclipse使用手册之五添加新的依赖项目到本地仓库
- [使用心得]maven2之m2eclipse使用手册之一简介与配置文件settings.xml
- maven2之m2eclipse使用手册之四编写通用Dao实例(二)
- 使用VB6.0编写管家婆服装----百胜服装ERP数据转换程序和通用SQL server查询程序的心得
- m2eclipse使用手册